我正在尝试在我的 Windows 8 64位笔记本电脑上设置 MingW 和 Code :: Blocks ,我遇到了一些问题在构建main.cpp
文件时。这些是我安装的版本:
我在环境变量中设置了mingw64\bin
的路径。此外,在Code :: Blocks编译器设置中,我为所有 ToolChain可执行文件设置了路径。 MingW bin路径中有两个 gcc 。一个是 - gcc.exe
,其他是 - x86_64-w64-mingw32-gcc.exe
。对于 C ++编译器,用于静态和动态库的链接器也是如此。现在,当我尝试构建一个简单的 Hello World 文件时,它会显示一些错误:
obj\Debug\main.o -- In function swscanf
c:\mingw\mingw64\bin\..\lib\gcc\x86_64-w64-mingw32\4.7.3\..\..\..\..\x86_64-w64-mingw32\include\wchar.h -- undefined reference to `__gxx_personality_sj0'
obj\Debug\main.o -- In function `wscanf':
c:\mingw\mingw64\bin\..\lib\gcc\x86_64-w64-mingw32\4.7.3\..\..\..\..\x86_64-w64-mingw32\include\wchar.h -- undefined reference to `__gxx_personality_sj0'
同样,有许多错误和未定义的引用 - fwprintf
,wprintf
,std:cout
等。
我确定存在一些配置问题,但我无法找出问题所在。任何人都可以看一下这个问题。
这是我正在运行的代码:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
答案 0 :(得分:2)
如果您不需要64位支持,请考虑下载“codeblocks-12.11mingw-setup.exe”
它包含自己的32位mingw,并为您预先配置了所有内容。
否则,如果你仍然需要编译amd64应用程序: -
假设您解压缩到D:\ Mingw64,在“工具链可执行文件”选项卡下,将“编译器的安装目录”设置为“D:\ Mingw64 \ bin”,然后单击自动检测以检查代码:: blocks是否喜欢它发现。
如果一切都好,请确保其余字段如下: -
C compiler: x86_64-w64-mingw32-gcc.exe
C++ compiler: x86_64-w64-mingw32-g++.exe
Linker for dynamic libs: x86_64-w64-mingw32-g++.exe
Linker for static libs: x86_64-w64-mingw32-ar.exe
Debugger: GDB/CDB Debugger...
Ressource compiler: x86_64-w64-mingw32-windres.exe
Make program: mingw32-make.exe
单击“其他路径”选项卡,然后输入以下行: - (路径对于版本4.7.4,您下载的路径是正确的。它以4.7.3结尾)
D:\Mingw64\libexec\gcc\x86_64-w64-mingw32\4.7.3\
点击“搜索目录”标签到中间左侧“工具链可执行文件”
添加以下路径: -
D:\Mingw64\include
D:\Mingw64\x86_64-w64-mingw32\include
D:\Mingw64\x86_64-w64-mingw32\include\c++\4.7.3
D:\Mingw64\x86_64-w64-mingw32\include\c++\4.7.3\backward
D:\Mingw64\x86_64-w64-mingw32\include\c++\4.7.3\x86_64-w64-mingw32
D:\Mingw64\lib\gcc\x86_64-w64-mingw32\4.7.3\include
单击“链接器”选项卡并添加以下路径: -
D:\Mingw64\Lib
D:\Mingw64\x86_64-w64-mingw32\lib
最后点击“编译器设置”选项卡,点击“其他选项”并添加: -
-m64
最后一件事 - &gt;记得将这些设置保存到磁盘!
如果在测试这个新配置时它崩溃了,你可能希望你有!
通过“File-&gt; Save Everything”执行此操作(我认为)或重新启动code :: blocks ... 而无需运行其他实例。
答案 1 :(得分:0)
和平!亲爱的兄弟,我想你需要这个:
(1) std :: cout&lt;&lt; “你好,世界!” &LT;&LT;的std :: ENDL;
每当你使用iostream.h中的预定义函数时,你需要输入“std :: function_name”,因为你可以在GCC中访问它,Code :: Blocks使用它。
(2)通过省略“using namespace std;”来尝试编译从你的代码。 因为我已经在32位Windows XP上的Code :: Blocks中多次编译了C和C ++代码,而且确实如此!
(3)确保路径设置为目录“mingw \ bin”。
(4)确保您是否安装了64位MinGW并将路径设置为其“bin”目录(如果要编译为64位)。它默认会编译为64位。
(5)尝试使用flags / arguments“-m32”和“-m64”分别编译32和64位。