dllwrap 无法使用 <iostream>?

dllwrap could not work with <iostream>?

本文关键字:iostream gt lt dllwrap      更新时间:2023-10-16

dllwrap 是 GNU GCC 在 mingw 中的工具。它用于构建像 gcc 或 g++ 这样的.dll文件,但我发现它不能很好地工作,如下所示:

你好3.cpp

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

你好3.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 利贝洛3.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()' collect2.exe: 错误: ld 返回 1 个退出 地位

如果我像这样设置 hello3.cpp

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

或者像这样

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

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

提前非常感谢任何帮助!

我刚刚在 dllwrap 中测试了 a 选项。效果很好,我会进一步检查。但我在dllwrap旧维基中找不到解释

选项是

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