04-02-2009 03:46 PM
I am using Intel C++ Compiler for Windows, Version 9.1, as my release mode compiler with CVI 8.5.1.
I have a DLL that calls another DLL, both of which have been authored using CVI.
When I try to link the second DLL, if the DLL that it calls was built with the DLLSTDCALL macro, I get link errors - "undefined symbol" - the second DLL can't find any of the functions I call in the first dll.
There's no problem when using the native CVI C compiler in debug or release mode for these same projects.
If I build the first DLL without using the dllstdcall macro, the second dll is able to link to it all OK with the Intel compiler in release mode.
CVI documentation says to use the DLLSTDCALL macro with exported dll functions (along with the DLLEXPORT macro).
Does anyone have any insight into what's happening here? Seems as if the Intel compiler/linker doesn't want to do __stdcall - but shouldn't it be able to?
I used the CVI template for Intel 9.0 compiler when configuring it as the release mode compiler.
Menchar
04-02-2009 05:16 PM
And if I change default calling convention in the build options when building the first DLL it makes no difference. I.e., using __stdcall as default doesn't eliminate the error.
Menchar
04-03-2009 05:26 PM
Hey menchar,
Do other calling conventions work such as cdecl? I'm not sure how the Intel C++ Compiler differs from our CVI C Compiler but perhaps this is a calling convention specific problem.
04-08-2009 01:13 PM