我在使用MS-s波形API的程序中遇到某种链接错误。我正在使用的代码可以在这里找到:http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4422&lngWId=3 这是页面上“打开声音设备”标题下的第一个代码。我没有得到代码的任何错误,但我的链接器抱怨非常持久。输出如下:
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\crt2.o:crt1.c|| undefined reference to `SetUnhandledExceptionFilter@4'|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\crt2.o:crt1.c|| undefined reference to `ExitProcess@4'|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\crtbegin.o:cygming-crtbegin.c|| undefined reference to `GetModuleHandleA@4'|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\crtbegin.o:cygming-crtbegin.c|| undefined reference to `GetProcAddress@8'|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `VirtualQuery@12'|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `VirtualProtect@16'|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `VirtualProtect@16'|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\libgcc.a(cygming-shared-data.o)||In function `cmshared_get_ptr_from_atom':|
c:\crossdev\b4.4.1-tdm-1\build-sjlj\mingw32\libgcc\..\..\..\..\gcc-4.4.1\libgcc\..\gcc\config\i386\cygming-shared-data.c|91|undefined reference to `GetAtomNameA@12'|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\libgcc.a(cygming-shared-data.o)||In function `_cmshared_create_or_grab':|
c:\crossdev\b4.4.1-tdm-1\build-sjlj\mingw32\libgcc\..\..\..\..\gcc-4.4.1\libgcc\..\gcc\config\i386\cygming-shared-data.c|140|undefined reference to `FindAtomA@4'|
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\libgcc.a(cygming-shared-data.o)||In function `cmshared_add_ptr_as_atom':|
c:\crossdev\b4.4.1-tdm-1\build-sjlj\mingw32\libgcc\..\..\..\..\gcc-4.4.1\libgcc\..\gcc\config\i386\cygming-shared-data.c|118|undefined reference to `AddAtomA@4'|
||=== Build finished: 10 errors, 0 warnings ===|
如果需要,我也可以在这里粘贴构建日志。有人能让我知道我需要做些什么来解决这个问题吗?或者甚至更好,如何自己排除故障,以便我可以自己修复这样的未来问题?
[编辑]:好的,所以我设法解决了这个问题。在Project-> Build Options-> Linker Settings-> Link Libraries中玩游戏时,我注意到如果我添加类似kernel32.lib的内容,我会从ld收到错误,说“找不到-lkernel32.lib”。所以我四处搜索,直到找到了我需要的库,然后我添加了绝对路径,现在我的项目编译完美无缺! :D然而,这有点奇怪,因为我添加了我的库搜索路径,它似乎没有帮助。所以我再次讨论它为什么它似乎没有工作,似乎必须在路径名称中添加一个尾部反斜杠,就像这些库位于“C:\ SDK \ Lib \”中一样为Code :: BLocks添加尾部斜杠以正确搜索它。修复后,我将链接器设置 - >链接库中的选项更改为内核32,现在它可以顺利运行。
感谢所有帮助过我的人! ^ _ ^
答案 0 :(得分:1)
当我将库放入system32并尝试使用LIBS += L$$quote(C:/Windows/System32)
链接到它时,我遇到了同样的错误。
当我将它放入普通目录并设置相对路径时,一切正常。
答案 1 :(得分:0)
看起来您没有使用Kernel32.lib进行链接检查您的项目属性。
答案 2 :(得分:0)
我遇到了同样的问题,经过一段时间我想出了怎么做,问题依赖于链接器,它试图将一些windows函数链接到exe文件,而编译器找不到那些,这是怎么回事我解决了这个问题:
就是这样......现在重建你的项目,它应该完美无缺。
注意:您需要将此设置添加到exe项目中,如果您正在创建库,则在尝试链接exe文件时将显示错误。