我下载了与GCC捆绑的Codeblocks从这里。
C部分运行正常。
我阅读了这个维基教程,它说有了GCC,只需将-lobjc添加到编译器选项中就可以编译Objective-C。
然而,我已经按照教程中提到的步骤添加了-lobjc选项,但它无法编译。 这是我在CodeBlocks中收到的构建错误信息:
如上所示,它并未显示-lobjc选项。
我也尝试在Windows cmd中手动编译上述程序,进入包含.m文件的文件夹。我给出了以下命令:
我从这里获取了信息,但它仍然给我相同的“CreateProcess”错误。 我如何在Windows上开始编译Objective C代码(最好使用GCC和Codeblocks)?
---编辑1---
如下Mike Kinghan's回答中所建议的,我卸载了旧的Codeblocks安装程序,然后单独重新安装了MinGW和codeblocks。 Codeblocks卸载程序删除了Program Files中的Codeblocks文件夹,但当我再次安装Codeblocks时(没有包含MinGW的版本),我先前安装的“GNU GCC Obj-C”设置仍然存在,并且在“链接器设置”选项卡中还有-lobjc标志。
但问题是仍然不起作用。 如果我尝试从Codeblocks构建,则会出现以下错误:
这是
它会返回错误。
这里有什么问题?
--- 编辑 2 ---
根据Mike Kinghan的建议,我删除了编译器列表中旧版的“GNU GCC Obj-C Compiler”,并重新创建了当前版本的“GNU GCC Compiler”。
但是,程序仍然无法运行。这是我在构建日志中收到的消息:
清理项目并重新构建后仍然显示相同的消息。尝试无论如何运行该项目都会弹出对话框,提示该项目尚未构建,并且单击“是”以构建该项目只会再次弹出相同的“项目尚未构建”对话框。在“项目”选项卡的“工作区树”中,文件图标似乎也变灰了:
我右键单击项目树中的项目图标,进入构建选项,并在链接器设置中添加了-lobjc。
C部分运行正常。
我阅读了这个维基教程,它说有了GCC,只需将-lobjc添加到编译器选项中就可以编译Objective-C。
然而,我已经按照教程中提到的步骤添加了-lobjc选项,但它无法编译。 这是我在CodeBlocks中收到的构建错误信息:
-------------- Build: Debug in test_prog_proj (compiler: GNU GCC Obj-C Compiler)---------------
mingw32-gcc.exe -Wall -g -c D:\backup\cb_files\objc_files\test_prog_proj\test_prog.m -o obj\Debug\test_prog.o
mingw32-gcc.exe: error: CreateProcess: No such file or directory
Process terminated with status 1 (0 minute(s), 2 second(s))
1 error(s), 0 warning(s) (0 minute(s), 2 second(s))
如上所示,它并未显示-lobjc选项。
我也尝试在Windows cmd中手动编译上述程序,进入包含.m文件的文件夹。我给出了以下命令:
mingw32-gcc.exe -Wall -g -c D:\backup\cb_files\objc_files\test_prog_proj\test_prog.m -o obj\Debug\test_prog.o -lobjc
但是我在命令提示符中得到了相同的错误
mingw32-gcc.exe: error: CreateProcess: No such file or directory
我也尝试了
gcc -g -fgnu-runtime -O -c some_class.m
我从这里获取了信息,但它仍然给我相同的“CreateProcess”错误。 我如何在Windows上开始编译Objective C代码(最好使用GCC和Codeblocks)?
---编辑1---
如下Mike Kinghan's回答中所建议的,我卸载了旧的Codeblocks安装程序,然后单独重新安装了MinGW和codeblocks。 Codeblocks卸载程序删除了Program Files中的Codeblocks文件夹,但当我再次安装Codeblocks时(没有包含MinGW的版本),我先前安装的“GNU GCC Obj-C”设置仍然存在,并且在“链接器设置”选项卡中还有-lobjc标志。
但问题是仍然不起作用。 如果我尝试从Codeblocks构建,则会出现以下错误:
Goto "Settings->Compiler...->Global compiler settings->GNU GCC Obj-C Compiler->Toolchain executables" and fix the compiler's setup.
Tried to run compiler executable 'C:\Program Files\CodeBlocks\MinGW/bin/mingw32-gcc.exe', but failed!
Skipping... Nothing to be done (all items are up-to-date).
这是
Toolchains executable
的外观:
如果我尝试通过cmd编译它,需要进入包含.m文件的文件夹并输入命令。mingw32-gcc.exe -Wall -g -c D:\backup\cb_files\objc_files\test_prog_proj\test_prog.m -o obj\Debug\test_prog.o -lobjc
它会返回错误。
mingw32-gcc.exe: error: CreateProcess: No such file or directory
这里有什么问题?
--- 编辑 2 ---
根据Mike Kinghan的建议,我删除了编译器列表中旧版的“GNU GCC Obj-C Compiler”,并重新创建了当前版本的“GNU GCC Compiler”。
但是,程序仍然无法运行。这是我在构建日志中收到的消息:
-------------- Build: Debug in test_prog_proj (compiler: GNU GCC Obj-C Compiler)---------------
Linking stage skipped (build target has no object files to link)
Nothing to be done (all items are up-to-date).
清理项目并重新构建后仍然显示相同的消息。尝试无论如何运行该项目都会弹出对话框,提示该项目尚未构建,并且单击“是”以构建该项目只会再次弹出相同的“项目尚未构建”对话框。在“项目”选项卡的“工作区树”中,文件图标似乎也变灰了:
这就是工具链可执行文件的样子:
我已经在链接器设置中添加了-lobjc
,就像这里提到的那样。我右键单击项目树中的项目图标,进入构建选项,并在链接器设置中添加了-lobjc。
目前这个项目存在什么问题?
--- 编辑 3 ---
我最终彻底卸载了 Codeblocks(从 Windows 开始菜单中卸载,在%APPDATA% 中删除 codeblocks 文件夹),卸载了 MinGW(删除 c:\MinGW 文件夹),并从头开始重新安装了所有东西。 我按照Wiki中的所有说明操作(除了Troubleshooting部分,但我认为那部分不相关),它仍然无法工作(与本帖子中编辑2描述的问题相同)。
如何让 Codeblocks 检测和编译 obj-C 代码?此外,当我尝试从 Codeblocks 界面构建它时,它不会显示编译器命令行参数。为什么会这样,我该如何让它显示使用的完整命令行?
libexec
文件夹下,您会找到一个名为cc1.exe
的程序。(在我的情况下,是C:\MinGW\libexec\gcc\mingw32\6.3.0\cc1.exe
)。 在与cc1.exe
相同的文件夹中,您是否看到一个名为cc1obj.exe
的程序? - Mike KinghanC:\Program Files\CodeBlocks\MinGW\libexec\gcc\mingw32\4.9.2
路径下只有cc1.exe。 - user13267