【发布时间】:2016-05-07 13:11:52
【问题描述】:
我使用 MinGw (i686-4.9.2-win32) 并尝试从 dll 导出类(在 Visual Studio 中制作)
但我收到一个错误undefined reference to _imp___ZN11ConsoleTestC1E'
BUT 函数foo() 来自同一个库,没有错误导出..
这是我的代码
testdll.h
#ifdef CONSOLETEST_EXPORT
#define CONSOLETEST_API __declspec(dllexport)
#else
#define CONSOLETEST_API __declspec(dllimport)
#endif
extern "C" class CONSOLETEST_API ConsoleTest{
public:
ConsoleTest();
};
extern "C" void CONSOLETEST_API foo();
testdll.cpp
#include "testdll.h"
ConsoleTest::ConsoleTest(){}
void foo(){}
在 main.cpp 中:
#include "testdll.h"
int main()
{
foo();
ConsoleTest* cc = new ConsoleTest();
}
PS:我尝试从 .dll 创建一个 .a 库:
pexports testdll.dll | sed "s/^_//" > testdll.def
dlltool -U -d testdll.def -l testdll.a
...但它没有帮助。
提前感谢您的任何建议!
【问题讨论】:
-
请注意:由于您使用的是 mingw,因此您不必弄乱 dllimport/dllexport。 Mingw 会像在良好的 ELF 系统上一样自动处理此问题(如果您收到链接器警告,您可以使用
-Wl,--enable-auto-import选项抑制它)。 -
谢谢,我不知道!