Я использую MinGW (i686-4.9.2-win32) и пытается экспортировать класс из DLL (который сделан в Visual Studio), Но я получаю сообщение об ошибке undefined reference to _imp___ZN11ConsoleTestC1E'
Ошибка компоновщика. MinGW не может экспортировать класс из МСВС DLL
НО функция 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: Я пытался создать .a библиотеки из .dll:
pexports testdll.dll | sed "s/^_//" > testdll.def
dlltool -U -d testdll.def -l testdll.a
... но это не помогло.
Заранее благодарим за любой совет!
Просто примечание: поскольку вы используете mingw, вам не нужно связываться с dllimport/dllexport. Mingw обрабатывает это автоматически, как на хороших ELF-системах (если вы получаете предупреждение компоновщика, вы можете его подавить с помощью опции '-Wl,-enable-auto-import'). –
Спасибо, я этого не знал! –