无法在 CodeBlocks 中编译 c 项目。进程以状态 1 终止
Cannot compile a c project in CodeBlocks. Process terminated with status 1
我有一个 C 语言的项目,它在 visual studio 中编译得很好,没有任何问题。但由于某些原因,我需要在 CodeBlocks 中编译它。我找不到在构建项目时出现此错误的原因。这是完整的构建日志:
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\adb_Person.c -o "Debug Win32\adb_Person.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\adb_addTodatabaseMethod.c -o "Debug Win32\adb_addTodatabaseMethod.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\adb_addTodatabaseMethodResponse.c -o "Debug Win32\adb_addTodatabaseMethodResponse.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\axis2_extension_mapper.c -o "Debug Win32\axis2_extension_mapper.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\axis2_stub_AddToDatabaseService.c -o "Debug Win32\axis2_stub_AddToDatabaseService.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\main.c -o "Debug Win32\main.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\adb_Message.c -o "Debug Win32\adb_Message.o"
mingw32-g++.exe -LC:\Tools\axis2c-bin-1.6.0-win32\lib -LC:\Tools\axis2c-bin-1.6.0-win32\lib -LE:\dev\CodeBlocks\MinGW\lib -o AddToDatabaseServiceClient.exe "Debug Win32\adb_Person.o" "Debug Win32\adb_addTodatabaseMethod.o" "Debug Win32\adb_addTodatabaseMethodResponse.o" "Debug Win32\axis2_extension_mapper.o" "Debug Win32\axis2_stub_AddToDatabaseService.o" "Debug Win32\main.o" "Debug Win32\adb_Message.o" C:\Tools\axis2c-bin-1.6.0-win32\lib C:\Tools\axis2c-bin-1.6.0-win32\lib\axiom.lib C:\Tools\axis2c-bin-1.6.0-win32\lib\axutil.lib C:\Tools\axis2c-bin-1.6.0-win32\lib\axis2_engine.lib
e:/dev/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: C:\Tools\axis2c-bin-1.6.0-win32\lib: No such file: Permission denied
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 8 seconds)
0 errors, 0 warnings
我正在使用 CodeBlocks 10.05 和 GNU GCC 编译器 (minGW)。该项目是一个 axis2c 生成的 C 网络服务客户端。
我将 -fPI
C 放在 编译器设置 下的 其他选项 选项卡中。然后我重建了项目。正如 CodeBlocks-wiki 中提到的那样。我尝试 运行 该应用程序,但我再次遇到该错误。
我在 中发布了另一个与此问题相关的问题。如果有人帮助我,我将不胜感激。
您是否看到链接器的错误消息显示:
C:\Tools\axis2c-bin-1.6.0-win32\lib: No such file
那是因为没有C:\Tools\axis2c-bin-1.6.0-win32\lib
这样的文件。它是一个目录,您不能 "link a directory",就像您不能 "compile a directory".
我们可以确定它是一个目录,因为您链接的所有库都在那个目录中:
C:\Tools\axis2c-bin-1.6.0-win32\lib\axiom.lib
C:\Tools\axis2c-bin-1.6.0-win32\lib\axutil.lib
C:\Tools\axis2c-bin-1.6.0-win32\lib\axis2_engine.lib
还因为您已经指定(两次)它是链接器应该搜索以查找库的目录:
-LC:\Tools\axis2c-bin-1.6.0-win32\lib -LC:\Tools\axis2c-bin-1.6.0-win32\lib
您需要:
- 将 Link 库 设置中的
C:\Tools\axis2c-bin-1.6.0-win32\lib
替换为
C:\Tools\axis2c-bin-1.6.0-win32\lib\<name_of_some_missing_library>.lib
或者,如果没有缺少的库(以上 3 个都是你需要的),那么:
- 从您的 Link 库 设置中删除
C:\Tools\axis2c-bin-1.6.0-win32\lib
您还可以从其他链接器选项中删除-LC:\Tools\axis2c-bin-1.6.0-win32\lib
(如果这就是您指定此链接器搜索路径的方式),and/or 您可以删除
C:\Tools\axis2c-bin-1.6.0-win32\lib
来自 搜索目录 -> Linker(如果
你就是这样做的)。您正在通过绝对指定所有 axis
库
路径名,因此无需告诉链接器在哪里寻找它们。
您可能还通过指定生成了这个重复的链接器搜索路径
一次在 设置 -> 编译器 -> 全局编译器设置 中,然后在 Linker 设置 中再次或
搜索您项目的目录 -> Linker。如果是这样,请将其从全局编译器设置中删除。
这些设置是您希望应用于使用编译器构建的每个项目的设置:这就是 Global 的重要性。
-fPIC
没有任何相关性,您不需要它来构建 .exe
我按照@Mike Kinghan 所说的做了。
另外我搜索并发现我正在使用的库是用 MSVC++ 编译的,不能与 MinGW 一起使用。根据 this 主题。
- 我用 reimp
创建了 .def 文件
- 然后我修改了 .def 文件中的每个 stdcall 函数(我将“_name@ordinal”更改为 "name")
- 然后我使用 dlltool 创建 .a 文件。
我将 .a 文件链接到我的项目。
一切顺利,我可以编译我的项目。但是当我尝试 运行 时。我收到此错误。
The procedure entry point axiom_attribute_create could not be located in the dynamic link library
我不知道该怎么办。
我有一个 C 语言的项目,它在 visual studio 中编译得很好,没有任何问题。但由于某些原因,我需要在 CodeBlocks 中编译它。我找不到在构建项目时出现此错误的原因。这是完整的构建日志:
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\adb_Person.c -o "Debug Win32\adb_Person.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\adb_addTodatabaseMethod.c -o "Debug Win32\adb_addTodatabaseMethod.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\adb_addTodatabaseMethodResponse.c -o "Debug Win32\adb_addTodatabaseMethodResponse.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\axis2_extension_mapper.c -o "Debug Win32\axis2_extension_mapper.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\axis2_stub_AddToDatabaseService.c -o "Debug Win32\axis2_stub_AddToDatabaseService.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\main.c -o "Debug Win32\main.o"
mingw32-gcc.exe -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT -IC:\Tools\axis2c-bin-1.6.0-win32\include -I. -IC:\Tools\axis2c-bin-1.6.0-win32\include -IC:\Tools\axis2c-bin-1.6.0-win32\include\platforms -IE:\dev\CodeBlocks\MinGW -c C:\Tools\axis2c-bin-1.6.0-win32\bin\tools\wsdl2c\src_addToDatabase_CodeBlocks\adb_Message.c -o "Debug Win32\adb_Message.o"
mingw32-g++.exe -LC:\Tools\axis2c-bin-1.6.0-win32\lib -LC:\Tools\axis2c-bin-1.6.0-win32\lib -LE:\dev\CodeBlocks\MinGW\lib -o AddToDatabaseServiceClient.exe "Debug Win32\adb_Person.o" "Debug Win32\adb_addTodatabaseMethod.o" "Debug Win32\adb_addTodatabaseMethodResponse.o" "Debug Win32\axis2_extension_mapper.o" "Debug Win32\axis2_stub_AddToDatabaseService.o" "Debug Win32\main.o" "Debug Win32\adb_Message.o" C:\Tools\axis2c-bin-1.6.0-win32\lib C:\Tools\axis2c-bin-1.6.0-win32\lib\axiom.lib C:\Tools\axis2c-bin-1.6.0-win32\lib\axutil.lib C:\Tools\axis2c-bin-1.6.0-win32\lib\axis2_engine.lib
e:/dev/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: C:\Tools\axis2c-bin-1.6.0-win32\lib: No such file: Permission denied
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 8 seconds)
0 errors, 0 warnings
我正在使用 CodeBlocks 10.05 和 GNU GCC 编译器 (minGW)。该项目是一个 axis2c 生成的 C 网络服务客户端。
我将 -fPI
C 放在 编译器设置 下的 其他选项 选项卡中。然后我重建了项目。正如 CodeBlocks-wiki 中提到的那样。我尝试 运行 该应用程序,但我再次遇到该错误。
我在
您是否看到链接器的错误消息显示:
C:\Tools\axis2c-bin-1.6.0-win32\lib: No such file
那是因为没有C:\Tools\axis2c-bin-1.6.0-win32\lib
这样的文件。它是一个目录,您不能 "link a directory",就像您不能 "compile a directory".
我们可以确定它是一个目录,因为您链接的所有库都在那个目录中:
C:\Tools\axis2c-bin-1.6.0-win32\lib\axiom.lib
C:\Tools\axis2c-bin-1.6.0-win32\lib\axutil.lib
C:\Tools\axis2c-bin-1.6.0-win32\lib\axis2_engine.lib
还因为您已经指定(两次)它是链接器应该搜索以查找库的目录:
-LC:\Tools\axis2c-bin-1.6.0-win32\lib -LC:\Tools\axis2c-bin-1.6.0-win32\lib
您需要:
- 将 Link 库 设置中的
C:\Tools\axis2c-bin-1.6.0-win32\lib
替换为C:\Tools\axis2c-bin-1.6.0-win32\lib\<name_of_some_missing_library>.lib
或者,如果没有缺少的库(以上 3 个都是你需要的),那么:
- 从您的 Link 库 设置中删除
C:\Tools\axis2c-bin-1.6.0-win32\lib
您还可以从其他链接器选项中删除-LC:\Tools\axis2c-bin-1.6.0-win32\lib
(如果这就是您指定此链接器搜索路径的方式),and/or 您可以删除
C:\Tools\axis2c-bin-1.6.0-win32\lib
来自 搜索目录 -> Linker(如果
你就是这样做的)。您正在通过绝对指定所有 axis
库
路径名,因此无需告诉链接器在哪里寻找它们。
您可能还通过指定生成了这个重复的链接器搜索路径 一次在 设置 -> 编译器 -> 全局编译器设置 中,然后在 Linker 设置 中再次或 搜索您项目的目录 -> Linker。如果是这样,请将其从全局编译器设置中删除。 这些设置是您希望应用于使用编译器构建的每个项目的设置:这就是 Global 的重要性。
-fPIC
没有任何相关性,您不需要它来构建 .exe
我按照@Mike Kinghan 所说的做了。 另外我搜索并发现我正在使用的库是用 MSVC++ 编译的,不能与 MinGW 一起使用。根据 this 主题。
- 我用 reimp 创建了 .def 文件
- 然后我修改了 .def 文件中的每个 stdcall 函数(我将“_name@ordinal”更改为 "name")
- 然后我使用 dlltool 创建 .a 文件。
我将 .a 文件链接到我的项目。 一切顺利,我可以编译我的项目。但是当我尝试 运行 时。我收到此错误。
The procedure entry point axiom_attribute_create could not be located in the dynamic link library
我不知道该怎么办。