C++ 在eclipse中从linux for windows编译

C++ 在eclipse中从linux for windows编译,c++,eclipse,cross-compiling,C++,Eclipse,Cross Compiling,我正在尝试用eclipse(linux)for windows编译我的项目。 我遵循了一个指南,然后我能够从命令行编译windows。我尝试使用GCC工具链创建我的项目,并选择我的前缀/目录 eclipse控制台上的输出是: Building file: ../src/provagcc2.cpp Invoking: Cross G++ Compiler x86_64-w64-mingw32-g++ -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/

我正在尝试用eclipse(linux)for windows编译我的项目。 我遵循了一个指南,然后我能够从命令行编译windows。我尝试使用GCC工具链创建我的项目,并选择我的前缀/目录

eclipse控制台上的输出是:

Building file: ../src/provagcc2.cpp
Invoking: Cross G++ Compiler
x86_64-w64-mingw32-g++ -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/provagcc2.d" -MT"src/provagcc2.o" -o "src/provagcc2.o" "../src/provagcc2.cpp"
Finished building: ../src/provagcc2.cpp

Building target: provagcc2
Invoking: Cross G++ Linker
x86_64-w64-mingw32-g++  -o "provagcc2"  ./src/provagcc2.o   
Finished building target: provagcc2
但是,它会生成一个.o文件而不是.exe文件。o“provagc2”看起来您没有为输出指定扩展名。因此,也应该有一个没有延伸的地方。您找到的provagc2.o文件可能是编译的结果。provagc2.cpp

-o“provagc2.exe”
是您在命令行上想要的


要让Eclipse正确命名文件,您需要导航到菜单上的Project->Properties。在弹出的属性对话框中,展开C/C++构建并选择设置。选择buildartifact选项卡,并在Artifact扩展字段中键入exe。应用并关闭并重新生成项目。

谢谢,它可以编译,但是.exe无法运行。我用wine(但也在windows中)进行了尝试,但未找到:错误:模块:导入dll库libstdc++-6.dll(L“Z:\\home\\me\\eclipse workspace\\provagc2\\Debug\\provagc2.exe所需)002e:err:module:attach\u dll导入L“Z:\\home\\me\\eclipse workspace\\provagc2\\Debug\\provagc2.exe的dll失败,状态c0000135。但是,从命令行编译的.exe可以工作fine@siruvio您可以随身携带标准库DLL和代码,但最好是静态链接它们,这样您就不必担心它们了。您的可执行文件将变得越来越大,但它将是独立的。导航项目->属性,展开C/C++构建并选择设置。在“工具设置”选项卡上,展开(可能)MIWW C++链接器并选择“杂项”。在链接器标志字段中键入-static。应用、关闭并重建项目。它与“hello world”一起工作。我尝试了一个更复杂的项目(我包括了库CLP),并从/opt/mingw64/x86_64-w64-mingw32/include/c++/4.9.0/cstdio:42:0、from/home/me/coin-CLP/CoinUtils/src/CoinMessageHandler.hpp:13、from/home/me/coin-CLP/CLP/src/ClpModel.hpp:20、,from/home/me/coin-Clp/Clp/src/ClpSimplex.hpp:16,from:0:/usr/include/stdio.h:71:19:错误:声明“typedef”与“typedef”冲突@siruvio建议您就这个问题提出新问题,因为它与当前的问题太不相同,不适合讨论这个主题。看起来可能有两种定义的
\uuuu ssize\u t
,但我需要在上下文中看到它,以及完整的格式化错误消息。这个信息可能还有更多的含义;编译器通常会告诉您在哪里找到冲突的另一半。好的,我这样做了,阻力最小的路径就是在目标操作系统(本机或虚拟机)上编译。交叉编译是一种痛苦,而且通常比工作本身更痛苦。为了支持Jesper的评论,我使用虚拟机正是出于这个原因,还有一个额外的动机:一旦项目“完成”并进入维护阶段,虚拟机将保留构建环境,这样那些跟随我(或我)的人就不必浪费时间建立一个相同的系统来完成我的工作。IDE升级,PC死亡,工具更换。如果你发现自己不得不从事一个已有25年历史的项目,并且由于这样或那样的原因无法将软件带入现代世界,那么虚拟机已经准备就绪,可以开始调试了。