dllwrap无法使用<iostream>?</iostream>

时间:2015-01-28 15:23:55

标签: c++ gcc dll mingw

dllwrap是mingw中GNU GCC的工具。它用于构建.dll文件,如gcc或g ++。但我发现它不能很好地用下面的方法:

hello3.cpp

#include<iostream>
extern "C"   void MyDllSay( void )
   {
   }

hello3.def

LIBRARY hello3.dll
EXPORTS 
MyDllSay               @1 
hello = MyDllSay     @2 

编译器代码是

  

g ++。exe -c -O3 hello3.cpp

     

dllwrap.exe -o hello3.dll hello3.o --def hello3.def --output-lib   libhello3.a

错误报告是

  

hello3.o:hello3.cpp :(。text + 0x8):未定义引用   std::ios_base::Init::~I nit()' hello3.o:hello3.cpp:(.text.startup+0xc): undefined reference to std :: ios_base :: Init :: Init()&#39; collect2.exe:错误:ld返回1退出   状态

如果我像这样设置hello3.cpp

//#include<iostream>
#include<fstream>
extern "C"   void MyDllSay( void )
   {

   }

或者像这样

//#include<iostream>
extern "C"   void MyDllSay( void )
   {

   }
一切都很好。 如何让dllwrap与iostream一起工作?

非常感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:0)

我刚刚测试了dllwrap中的一个选项。它工作得很好,我会进一步检查。 但我在dllwrap old wiki

中找不到解释

选项是

  

-lstdc ++   新编译器是   dllwrap.exe -o hello3.dll hello3.o --def hello3.def --output-lib   libhello3.a -lstdc ++