无法在CodeBlocks中编译c项目.进程已终止,状态为1



我有一个C语言的项目,它在visual studio中编译得很好,没有任何问题。但由于某些原因,我需要在CodeBlocks中编译它。我找不到在构建项目时出现此错误的原因。这是完整的构建日志:

mingw32-gcc.exe  -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT    -IC:Toolsaxis2c-bin-1.6.0-win32include -I. -IC:Toolsaxis2c-bin-1.6.0-win32include -IC:Toolsaxis2c-bin-1.6.0-win32includeplatforms -IE:devCodeBlocksMinGW  -c C:Toolsaxis2c-bin-1.6.0-win32bintoolswsdl2csrc_addToDatabase_CodeBlocksadb_Person.c -o "Debug Win32adb_Person.o"
mingw32-gcc.exe  -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT    -IC:Toolsaxis2c-bin-1.6.0-win32include -I. -IC:Toolsaxis2c-bin-1.6.0-win32include -IC:Toolsaxis2c-bin-1.6.0-win32includeplatforms -IE:devCodeBlocksMinGW  -c C:Toolsaxis2c-bin-1.6.0-win32bintoolswsdl2csrc_addToDatabase_CodeBlocksadb_addTodatabaseMethod.c -o "Debug Win32adb_addTodatabaseMethod.o"
mingw32-gcc.exe  -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT    -IC:Toolsaxis2c-bin-1.6.0-win32include -I. -IC:Toolsaxis2c-bin-1.6.0-win32include -IC:Toolsaxis2c-bin-1.6.0-win32includeplatforms -IE:devCodeBlocksMinGW  -c C:Toolsaxis2c-bin-1.6.0-win32bintoolswsdl2csrc_addToDatabase_CodeBlocksadb_addTodatabaseMethodResponse.c -o "Debug Win32adb_addTodatabaseMethodResponse.o"
mingw32-gcc.exe  -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT    -IC:Toolsaxis2c-bin-1.6.0-win32include -I. -IC:Toolsaxis2c-bin-1.6.0-win32include -IC:Toolsaxis2c-bin-1.6.0-win32includeplatforms -IE:devCodeBlocksMinGW  -c C:Toolsaxis2c-bin-1.6.0-win32bintoolswsdl2csrc_addToDatabase_CodeBlocksaxis2_extension_mapper.c -o "Debug Win32axis2_extension_mapper.o"
mingw32-gcc.exe  -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT    -IC:Toolsaxis2c-bin-1.6.0-win32include -I. -IC:Toolsaxis2c-bin-1.6.0-win32include -IC:Toolsaxis2c-bin-1.6.0-win32includeplatforms -IE:devCodeBlocksMinGW  -c C:Toolsaxis2c-bin-1.6.0-win32bintoolswsdl2csrc_addToDatabase_CodeBlocksaxis2_stub_AddToDatabaseService.c -o "Debug Win32axis2_stub_AddToDatabaseService.o"
mingw32-gcc.exe  -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT    -IC:Toolsaxis2c-bin-1.6.0-win32include -I. -IC:Toolsaxis2c-bin-1.6.0-win32include -IC:Toolsaxis2c-bin-1.6.0-win32includeplatforms -IE:devCodeBlocksMinGW  -c C:Toolsaxis2c-bin-1.6.0-win32bintoolswsdl2csrc_addToDatabase_CodeBlocksmain.c -o "Debug Win32main.o"
mingw32-gcc.exe  -g -W -O0 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DSERVICE_EXPORTS -DAXIS2_DECLARE_EXPORT    -IC:Toolsaxis2c-bin-1.6.0-win32include -I. -IC:Toolsaxis2c-bin-1.6.0-win32include -IC:Toolsaxis2c-bin-1.6.0-win32includeplatforms -IE:devCodeBlocksMinGW  -c C:Toolsaxis2c-bin-1.6.0-win32bintoolswsdl2csrc_addToDatabase_CodeBlocksadb_Message.c -o "Debug Win32adb_Message.o"
mingw32-g++.exe -LC:Toolsaxis2c-bin-1.6.0-win32lib -LC:Toolsaxis2c-bin-1.6.0-win32lib -LE:devCodeBlocksMinGWlib  -o AddToDatabaseServiceClient.exe "Debug Win32adb_Person.o" "Debug Win32adb_addTodatabaseMethod.o" "Debug Win32adb_addTodatabaseMethodResponse.o" "Debug Win32axis2_extension_mapper.o" "Debug Win32axis2_stub_AddToDatabaseService.o" "Debug Win32main.o" "Debug Win32adb_Message.o"    C:Toolsaxis2c-bin-1.6.0-win32lib C:Toolsaxis2c-bin-1.6.0-win32libaxiom.lib C:Toolsaxis2c-bin-1.6.0-win32libaxutil.lib C:Toolsaxis2c-bin-1.6.0-win32libaxis2_engine.lib 
e:/dev/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: C:Toolsaxis2c-bin-1.6.0-win32lib: 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 Web服务客户端。

我将-fPI C放在编译器设置下的其他选项选项卡中。然后我重建了这个项目。正如CodeBlocks wiki中提到的那样。我试着运行应用程序,但又出现了错误。

我在这个链接中发布了另一个与这个问题有关的问题。如果有人帮我,我将不胜感激。

你看到链接器的错误消息说:吗

C: \Tools\axis2c-bin-1.6.0-win32\lib:没有这样的文件

这是因为没有像C:Toolsaxis2c-bin-1.6.0-win32lib这样的文件。它是一个目录,不能"链接目录",就像不能"编译目录"一样。

我们可以确定它是一个目录,因为你链接的所有库都在中:

C:Toolsaxis2c-bin-1.6.0-win32libaxiom.lib 
C:Toolsaxis2c-bin-1.6.0-win32libaxutil.lib 
C:Toolsaxis2c-bin-1.6.0-win32libaxis2_engine.lib

还因为您已经指定(两次)它是链接器应该搜索以查找库的目录:

-LC:Toolsaxis2c-bin-1.6.0-win32lib -LC:Toolsaxis2c-bin-1.6.0-win32lib 

您需要:

  • 用替换链接库设置中的C:Toolsaxis2c-bin-1.6.0-win32libC:Toolsaxis2c-bin-1.6.0-win32lib<name_of_some_missing_library>.lib

或者,如果没有丢失的库(以上3个都是您需要的),那么:

  • 链接库设置中删除C:Toolsaxis2c-bin-1.6.0-win32lib

您也可以从其他链接器选项中删除-LC:Toolsaxis2c-bin-1.6.0-win32lib(如果您就是这样指定这个链接器搜索路径的),和/或您可以删除搜索目录->链接器中的C:Toolsaxis2c-bin-1.6.0-win32lib(如果你就是这么做的)。您正在按绝对值指定所有axis库路径名,所以不需要告诉链接器在哪里查找它们。

您可能还通过指定产生了此重复的链接器搜索路径一次在设置->编译器->全局编译器设置中,另一次在链接器设置索项目的目录->Linker。如果是,请将其从全局编译器设置中删除。这些设置是您希望应用于使用编译器构建的每个项目的设置:这就是Global的意义所在。

-fPIC没有任何相关性,您不需要它来构建.exe

我照@Mike Kinghan说的做了。另外,我搜索发现我使用的库是用MSVC++编译的,不能与MinGW一起使用。根据这个主题。

  • 我使用reimap创建了.def文件
  • 然后我修改了.def文件中的每个stdcall函数(我更改了"_name@ordinal"到"name")
  • 然后我使用dlltool创建.a文件

我将.a文件链接到我的项目。一切都很顺利,我可以编译我的项目了。但当我尝试运行它时,我会遇到这个错误。

在动态链接库中找不到过程入口点公理_attribute_create

我不知道该怎么办。

最新更新