ExportModuleLsm.cpp.obj : error LNK2019 for esys-particle-win building

Asked by guo

Hello all,
I am using the esys-particle-win 2.1, but the TriangleFieldSaverPrmsPy is unavailable. So i want to add this into esys-particle-win.
What I did is that: (according Dion's suggestion https://answers.launchpad.net/esys-particle/+question/193362)

step 1. I used the files in the following( http://bazaar.launchpad.net/~esys-p-dev/esys-particle/trunk/revision/1003) change the files in my bazaar path (C:\Program Files (x86)\Bazaar\esys-particle-win\trunk )
Geometry/Triangle.h
Model/TriMesh.cpp
Python/esys/lsm/ExportModuleLsm.cpp
Python/esys/lsm/LsmMpiPy.cpp
Python/esys/lsm/LsmMpiPy.h
Python/esys/lsm/Makefile.am
Python/esys/lsm/TriangleFieldSaverPrmsPy.cpp
Python/esys/lsm/TriangleFieldSaverPrmsPy.h
step 2. add TriangleFieldSaverPrmsPy.cpp and TriangleFieldSaverPrmsPy.h in the "set set(LibLsmPy_LIB_SRCS" part in cmakelists.txt in folder "C:\Program Files (x86)\Bazaar\esys-particle-win\trunk\Python\esys\lsm"
step 3. rebuild esys-particle-win as described in "ESyS-Particle-win Build Instructions 2 April 2012"

However, an error happened as follows: after a hard search I still cannot fix it.

[ 64%] Built target ESySParticleBEWorker
Scanning dependencies of target mpipython
[ 64%] Building CXX object Python/MpiPython/CMakeFiles/mpipython.dir/MpiPythonMa
in.cpp.obj
MpiPythonMain.cpp
Linking CXX executable ..\..\output\mpipython.exe
[ 64%] Built target mpipython
Scanning dependencies of target BoostPythonUtil
[ 64%] Building CXX object Python/BoostPythonUtil/CMakeFiles/BoostPythonUtil.dir
/ListConverter.cpp.obj
ListConverter.cpp
Linking CXX shared library ..\..\output\BoostPythonUtil.dll
[ 64%] Built target BoostPythonUtil
Scanning dependencies of target LibFoundationPy
[ 64%] Building CXX object Python/esys/lsm/util/CMakeFiles/LibFoundationPy.dir/V
ec3Py.cpp.obj
Vec3Py.cpp
[ 64%] Building CXX object Python/esys/lsm/util/CMakeFiles/LibFoundationPy.dir/B
oundingBoxPy.cpp.obj
BoundingBoxPy.cpp
[ 65%] Building CXX object Python/esys/lsm/util/CMakeFiles/LibFoundationPy.dir/B
oundingSpherePy.cpp.obj
BoundingSpherePy.cpp
[ 65%] Building CXX object Python/esys/lsm/util/CMakeFiles/LibFoundationPy.dir/R
ngPy.cpp.obj
RngPy.cpp
[ 65%] Building CXX object Python/esys/lsm/util/CMakeFiles/LibFoundationPy.dir/S
etPy.cpp.obj
SetPy.cpp
[ 66%] Building CXX object Python/esys/lsm/util/CMakeFiles/LibFoundationPy.dir/V
ectorPy.cpp.obj
VectorPy.cpp
[ 66%] Building CXX object Python/esys/lsm/util/CMakeFiles/LibFoundationPy.dir/Q
uaternionPy.cpp.obj
QuaternionPy.cpp
Linking CXX shared library ..\..\..\..\output\LibFoundationPy.dll
   Creating library ..\..\..\..\lib\LibFoundationPy.lib and object ..\..\..\..\l
ib\LibFoundationPy.exp
[ 66%] Built target LibFoundationPy
Scanning dependencies of target FoundationPy
[ 66%] Building CXX object Python/esys/lsm/util/CMakeFiles/FoundationPy.dir/Expo
rtModuleUtil.cpp.obj
ExportModuleUtil.cpp
Linking CXX shared library ..\..\..\..\output\FoundationPy.pyd
   Creating library ..\..\..\..\lib\FoundationPy.lib and object ..\..\..\..\lib\
FoundationPy.exp
[ 66%] Built target FoundationPy
Scanning dependencies of target LibLsmPy
[ 67%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/LsmMpiPy.cpp.
obj
LsmMpiPy.cpp
[ 67%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/RunnablePy.cp
p.obj
RunnablePy.cpp
[ 67%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/CheckPointPar
amsPy.cpp.obj
CheckPointParamsPy.cpp
[ 68%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/InteractionPa
ramsPy.cpp.obj
InteractionParamsPy.cpp
[ 68%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/InteractionGr
oupPy.cpp.obj
InteractionGroupPy.cpp
[ 68%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/BondInteracti
onGroupPy.cpp.obj
BondInteractionGroupPy.cpp
[ 69%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/BondedTriMesh
PrmsPy.cpp.obj
BondedTriMeshPrmsPy.cpp
[ 69%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/BondedMesh2DP
rmsPy.cpp.obj
BondedMesh2DPrmsPy.cpp
[ 69%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/MeshBuildPara
msPy.cpp.obj
MeshBuildParamsPy.cpp
[ 70%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/WallPrmsPy.cp
p.obj
WallPrmsPy.cpp
[ 70%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/ParticlePy.cp
p.obj
ParticlePy.cpp
c:\program files (x86)\bazaar\esys-particle-win\trunk\python\esys\lsm\particlepy
.cpp(76) : warning C4717: 'esys::lsm::ParticlePy::getForce' : recursive on all c
ontrol paths, function will cause runtime stack overflow
c:\program files (x86)\bazaar\esys-particle-win\trunk\python\esys\lsm\particlepy
.cpp(81) : warning C4717: 'esys::lsm::ParticlePy::setForce' : recursive on all c
ontrol paths, function will cause runtime stack overflow
[ 70%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/FieldSaverPrm
sPy.cpp.obj
FieldSaverPrmsPy.cpp
[ 70%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/ParticleField
SaverPrmsPy.cpp.obj
ParticleFieldSaverPrmsPy.cpp
[ 71%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/InteractionFi
eldSaverPrmsPy.cpp.obj
InteractionFieldSaverPrmsPy.cpp
[ 71%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/ElasticTriMes
hPrmsPy.cpp.obj
ElasticTriMeshPrmsPy.cpp
[ 71%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/WallFieldSave
rPrmsPy.cpp.obj
WallFieldSaverPrmsPy.cpp
[ 72%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/RotParticlePy
.cpp.obj
RotParticlePy.cpp
[ 72%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/LmParticleAdd
er.cpp.obj
LmParticleAdder.cpp
[ 72%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/TriggerPrmsPy
.cpp.obj
TriggerPrmsPy.cpp
[ 73%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/ElasticMesh2D
PrmsPy.cpp.obj
ElasticMesh2DPrmsPy.cpp
[ 73%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/ParticleIdPai
rSetPy.cpp.obj
ParticleIdPairSetPy.cpp
[ 73%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/ParticleIdPai
rPy.cpp.obj
ParticleIdPairPy.cpp
[ 74%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/ParticleIdPai
rVectorPy.cpp.obj
ParticleIdPairVectorPy.cpp
[ 74%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/RotParticleVi
Py.cpp.obj
RotParticleViPy.cpp
[ 74%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/RotThermalPar
ticlePy.cpp.obj
RotThermalParticlePy.cpp
[ 75%] Building CXX object Python/esys/lsm/CMakeFiles/LibLsmPy.dir/TriangleField
SaverPrmsPy.cpp.obj
TriangleFieldSaverPrmsPy.cpp
Linking CXX shared library ..\..\..\output\LibLsmPy.dll
   Creating library ..\..\..\lib\LibLsmPy.lib and object ..\..\..\lib\LibLsmPy.e
xp
[ 75%] Built target LibLsmPy
Scanning dependencies of target LsmPy
[ 75%] Building CXX object Python/esys/lsm/CMakeFiles/LsmPy.dir/ExportModuleLsm.
cpp.obj
ExportModuleLsm.cpp
Linking CXX shared library ..\..\..\output\LsmPy.pyd
   Creating library ..\..\..\lib\LsmPy.lib and object ..\..\..\lib\LsmPy.exp
ExportModuleLsm.cpp.obj : error LNK2019: unresolved external symbol "void __cdec
l esys::lsm::exportTriangleFieldSaverPrms(void)" (?exportTriangleFieldSaverPrms@
lsm@esys@@YAXXZ) referenced in function "void __cdecl init_module_LsmPy(void)" (
?init_module_LsmPy@@YAXXZ)
..\..\..\output\LsmPy.pyd : fatal error LNK1120: 1 unresolved externals
LINK failed. with 1120
NMAKE : fatal error U1077: '"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe"' :
return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\nmake.exe"' : return code '0x2'
Stop.

C:\Program Files (x86)\Bazaar\esys-particle-win\trunk\buildvs2010>nmake

Could anyone help me on this, Thanks very much!

Best Regards
Guo

Question information

Language:
English Edit question
Status:
Solved
For:
ESyS-Particle Edit question
Assignee:
No assignee Edit question
Solved by:
Feng Chen
Solved:
Last query:
Last reply:
Revision history for this message
Feng Chen (fchen3-gmail) said :
#1

Hi, Guo:

You need to add windows DLL export/import specifier "DECLSPEC_LSM_PY" in front of your exportTriangleFieldSaverPrms:

so in your TriangleFieldSaverPrmsPy.h, line 37

instead of the current definition:

void exportTriangleFieldSaverPrms();

you should have

void DECLSPEC_LSM_PY exportTriangleFieldSaverPrms();

See if this works!

Feng

Revision history for this message
guo (kwohoo) said :
#2

Thank you Feng,
I have successfully added the function, but when I run the python script, the following error happens.
it seems that error occurs at "timeStepIncr=100".
I tried to change the value, but still cannot works.

Setting environment for using Microsoft Visual Studio 2010 x86 tools.

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>f:

F:\>cd F:\Simluations\Esys-particle\tem

F:\Simluations\Esys-particle\tem>mpiexec -np 2 -machinefile hosts.txt mpipython.
exe intruder.py
No SPAWN: CSubLatticeControler::initMPI()
No SPAWN: slave started at local/global rank 1848617738 / 1

--- WARNING ---
ESyS-Particle 2.0 by default scales elastic stiffness according to particle dime
nsions.
To disable scaling set "scaling=False" in the NRotFrictionPrms argument list.
To remove this warning set "scaling=True".
For more information about scaling refer to the ESyS-Particle Tutorial available
 at:
https://twiki.esscc.uq.edu.au/bin/view/ESSCC/DocumentationAndPresentations

Traceback (most recent call last):
  File "intruder.py", line 134, in <module>
    timeStepIncr=100
Boost.Python.ArgumentError: Python argument types in
    TriangleVectorFieldSaverPrms.__init__(TriangleVectorFieldSaverPrms)
did not match C++ signature:
    __init__(struct _object *, class std::basic_string<char,struct std::char_tra
its<char>,class std::allocator<char> > meshName, class std::basic_string<char,st
ruct std::char_traits<char>,class std::allocator<char> > fieldName, class std::b
asic_string<char,struct std::char_traits<char>,class std::allocator<char> > file
Name, class std::basic_string<char,struct std::char_traits<char>,class std::allo
cator<char> > fileFormat, int beginTimeStep, int endTimeStep, int timeStepIncr)

Hong

Revision history for this message
Best Feng Chen (fchen3-gmail) said :
#3

Hi, Guo:

Can you check your python parameters and see if they match the C++ definitions?

Feng

Revision history for this message
guo (kwohoo) said :
#4

Thank you Feng,
I change the code fragment in my python script blew:

prm=TriangleVectorFieldSaverPrms(
 meshName="intruder_wall",
 fieldName="force",
       fileName="out_drag_force.dat",
 fileFormat="RAW",
 beginTimeStep=0,
 endTimeStep=10000,
 timeStepIncr=100
)
sim.addVectorTriangleSaveField(prm)

And it works, i forget add the fileName function in it.

Revision history for this message
guo (kwohoo) said :
#5

Thanks Feng Chen, that solved my question.