链接器错误。 MinGW无法从MSVS dll导出类

时间:2016-05-07 13:11:52

标签: c++ dll linker mingw

我使用MinGw(i686-4.9.2-win32)并尝试从dll导出该类(在visual studio中制作) 但是我收到错误undefined reference to _imp___ZN11ConsoleTestC1E'

但是导出的同一个库中的函数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

......但它没有帮助。

提前感谢任何建议!

1 个答案:

答案 0 :(得分:1)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> </script> <div class="animateNumber">1</div> <div class="animateNumber">2</div> <div class="animateNumber">3</div>无法工作。 您可以dll导出类,但不能使用C命名约定。

ISO C ++ 03 7.5 [dcl.link] / 4:

  

对于类成员和成员函数的名称,将忽略C语言链接   类成员函数的类型。

如果您删除extern "C" class,我认为没有理由不行。