我有一个程序
#include<iostream>
#include<windows.h>
using namespace std;
int main()
{
cout<<"Hello World!! This Program Is made in win32 API\n";
return 0;
}
但是当我编译这个程序时
x86_64-w64-mingw32-g++ Hello.cpp -o hello64.exe
并运行它
wine64 hello64.exe
我收到 2 个错误
0009:err:module:import_dll Library libstdc++-6.dll (which is needed by L"Z:\\home\\garvit\\C++\\hello64.exe") not found
0009:err:module:LdrInitializeThunk Importing dlls for L"Z:\\home\\garvit\\C++\\hello64.exe" failed, status c0000135
我正在使用 Ubuntu 20.04,而且我是 Linux 新手。
您需要将此 libstdc++-6.dll 从您的 mingw 安装(应该在 /usr/lib/gcc/x86-w64-mingw32/9.3-win32/ 中)复制到与您的 exe 文件相同的目录中。我希望您会收到关于 libgcc_s_sjlj-1.dll 的类似消息,您还需要复制该消息。
我在 Windows VM 上使用 32 位进行了测试,但我希望这不会产生影响。
您收到错误是因为 Wine 不知道这些库在哪里可用。你有两个选择:
如果您没有许可问题(例如
libstdc++
,使用 LGPL 来链接该库,如果您分发它,您需要在 LGPL 下许可您的程序),您应该静态链接。对于一个 hello world 程序,编译命令是这样的:另一种选择是将所有库放在同一目录中。
/usr/lib/gcc/x86_64-w64-mingw32/9.3-win32/
因此,只需从or复制这些文件/usr/lib/gcc/x86-w64-mingw32/9.3-win32/
,您的程序就应该运行良好。