i have a hardware (xray sensor) which has development tools. but afaiu these are built in msvc. so i have a .lib file and .dll file . if i include this lib file to my project (i am using qt), and put dll file to the exe folder and compile using MSVC-Release option everytihng works. But when i try to compile using mingw-Release option. it fails.
undefined reference to `imp__ZN6IDcDrv6CreateEPKci'
undefined reference to `imp__ZN6IDcDrv14GetDeviceCountEv'
can you point some way out so that i can use these lib. and dll files using mingw compiler
ps: i tried and failed impdef dclibsn.dll>dclib.def
dlltool -dllname dclibsn.dll --def dclib.def --output-lib libdclibsn.a
and this is how my def file looks like
LIBRARY "dclibsn.dll"
EXPORTS
??0DcDrv@@QAE@ABV0@@Z
??0DcDrv@@QAE@V?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z
??0IDcDrv@@QAE@ABV0@@Z
??0IDcDrv@@QAE@XZ
??1DcDrv@@QAE@XZ
??4DcDrv@@QAEAAV0@ABV0@@Z
??4IDcDrv@@QAEAAV0@ABV0@@Z
?CaptureImage@DcDrv@@AAE_NHHHK_NHH@Z
?CloseUsbDevice@DcDrv@@AAE_NXZ
?ColumnDefectComp@DcDrv@@AAEGPBGH@Z
?CompensationImage@DcDrv@@AAEXPAGQAEHH@Z
?Create@IDcDrv@@SAPAVDcDrv@@PBDH@Z
note the last entry in this file (Create. ) i am trying to call this in the program and i get
(.text+0x1ad): undefined reference to `_imp___ZN6IDcDrv6CreateEPKci'
and if i replace the line ?Create@IDcDrv@@SAPAVDcDrv@@PBDH@Z
with imp__ZN6IDcDrv6CreateEPKci it compiles, but gives error.
The procedure entry point _ZN6IDcDrv6CreateEPKci could not be located in the dynamic link library dclibsn.DLL.
See this : How to use libraries compiled with MingW in MSVC?
I mean surrounding #include with extern "C" block. Because using extern "C" will instruct the compiler that the functions are using C linkage, not C++, which will stop it from performing name mangling on the functions.
I think name mangling causes problem in linkage. Don't know this will help automatic using of dll or not. Hope it will. Becuase i need to write a CUDA based dll in MSVC 2005 and use it in mingw.
Hope this help. :-?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With