2011-08-22 96 views
0

我正在使用MS-s波形API程序獲得某種鏈接錯誤。我正在使用的代碼可以在這裏找到:http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4422&lngWId=3 這是頁面上的第一個代碼位的標題「打開聲音設備」。我沒有得到代碼的任何錯誤,但是我的鏈接器抱怨持續不斷。輸出如下:波形API鏈接錯誤

d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\crt2.o:crt1.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\crt2.o:crt1.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\crtbegin.o:cygming-crtbegin.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\crtbegin.o:cygming-crtbegin.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `[email protected]'| 
d:\codeblocks\mingw\bin\..\lib\gcc\mingw32\4.4.1\..\..\..\libmingw32.a(pseudo-reloc.o):pseudo-reloc.c|| undefined reference to `[email protected]'| 
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 `[email protected]'| 
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 `[email protected]'| 
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 `[email protected]'| 
||=== Build finished: 10 errors, 0 warnings ===| 

我可以在這裏粘貼生成日誌,如果需要的話。有誰能讓我知道我需要做什麼來解決這個問題嗎?或者甚至更好,如何自己排除故障,以便我可以自己解決像這樣的未來問題?

[編輯]:好吧,我設法解決這個問題。當在Project-> Build Options-> Linker Settings-> Link Libraries中玩時,我注意到如果我添加類似kernel32.lib的東西,我從ld中得到一個錯誤,說「找不到-lkernel32.lib」。所以我搜索了四周直到找到我需要的庫,並且爲它們添加了絕對路徑,現在我的項目完美地編譯了! :D然而,這樣做有點奇怪,因爲我確實添加了我的庫搜索路徑,但似乎沒有幫助。所以我再次回過頭來看看它爲什麼似乎沒有工作,似乎需要爲路徑名添加尾部反斜槓,就像庫位於「C:\ SDK \ Lib \」中一樣爲Code :: BLocks添加尾部斜槓以正確搜索它。一旦解決了問題,我改變了鏈接器設置 - >鏈接庫到kernel32的選項,正如我們推薦的那樣,現在它可以順利運行。

感謝大家幫我這個!!!^_^

回答

0

看起來你沒有鏈接到Kernel32.lib檢查你的項目屬性。

+0

實際上我似乎沒有kernel32.lib。 :/這可能是事實,我在Windows 7啓動器(希望我可以改變這一點,但我目前有一些有限的資源),但我確實有一個kernel32.dll,但我嘗試鏈接到並沒有奏效。我對Code :: Blocks有點新,所以我可能做得不對,我將它設置在Project-> Build Options-> Linker Settings-> Link libraries中,是否正確?另外,是什麼導致你認爲我沒有與kernel32.lib鏈接?不是試圖聽取審問,但正如我所說我想學習如何自己弄清楚這樣的事情。 – Luna

0

我想同樣的問題,並在一段時間後,我想出瞭如何做到這一點,問題依賴於鏈接器,它試圖鏈接一些Windows功能到exe文件,並且編譯器找不到這些,這是我是如何解決這個:

  1. 安裝Windows 7 SDK,你可以從這裏下載:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=3138
  2. 添加庫路徑搜索庫的代碼塊 項目/編譯選項(選擇該項目,如果你想將其鏈接到您擁有的所有配置)/ Search Directories/Linker/Add並放置SDK庫路徑,該路徑應位於:C:\ Program Files \項目/構建選項/鏈接器設置/添加(在鏈接庫)並添加kernel32,user32和gdi32(這是最後一個如果你使用的是windows gui,應該添加一個)。

就是這樣......現在重建您的項目,它應該完美地工作。

注意:您需要將此設置添加到exe項目,如果您正在創建庫,嘗試鏈接exe文件時會顯示錯誤。

+0

感謝您的回覆。不幸的是,它並沒有解決我的問題。我已經有了需要的庫(我檢查了文件夾),並且添加了必要的引用,但是我仍然遇到同樣的問題,實際上,我得到的錯誤沒有區別。我正在考慮嘗試使用MSVC 2008 Express來查看它是否在那裏工作,一旦我有機會,我會公佈結果。 – Luna

1

當我將一個庫放入system32並嘗試使用LIBS += L$$quote(C:/Windows/System32)鏈接到它時,我得到了同樣的錯誤。

當我把它放到一個普通的目錄並設置它的相對路徑時,一切正常。