dev C++ windows程序 undefine reference to

本文轉自:http://yadang418.blog.163.com/blog/static/268436562009113233256/

-mwindows -lcomctl32 -lwinmm -lws2_32 -lodbc32 -lmysql   -lwinspool
1.工具-編譯選項-編譯器-在連接器命令行加入以下命令:
-mwindows
 2.出現錯誤:undefined reference to `PlaySoundA@12'
    解決辦法:工具-編譯選項-編譯器-在連接器命令行加入以下命令:-lwinmm 
3.undefined reference to `CreateStatusWindowA@16':
  在工程設置中添加 comctl32.lib  
  在link選項中添加-lcomctl32

-mwindows -lcomctl32 -lmysql -lwinmm
4.DEV C++無法調試問題:
 編譯器裏,勾上 編譯時加入以下命令
  輸入: -g
5.undefined reference to `EnumPrintersA@28'
 -lwinspool
6.
對於mingw,使用WIN32API函數需要包含相應的頭文件,比如gethostname需要 #include <winsock.h>,連接時加-lwsock32。 
7. undefined reference to `WSAStartup@8'
-lws2_32   
8.提示WM_CTLCOLOR未定義
  引入 : #include <windowsx.h>  
9.連接ms sqlserver數據庫錯誤:
Objects/MingW/main.o:main.c:(.text+0x398e): undefined reference to `SQLAllocHandle@12'
Objects/MingW/main.o:main.c:(.text+0x39b6): undefined reference to `SQLSetEnvAttr@16'
Objects/MingW/main.o:main.c:(.text+0x39d6): undefined reference to `SQLAllocHandle@12'
....
-lodbc32

 

第二種方案:http://www.cnblogs.com/vilyLei/articles/1812634.html

 

    我在windows xp下使用Dev-c++構建一個socket應用,我使用
    #include <winsock.h> 或 #include <winsock2.h> 都會出現下面的大片錯誤:
[Linker error] undefined reference to `WSACleanup@0'
[Linker error] undefined reference to `WSAStartup@8'
...
我在Project -> Project Options -> parameter -> linker 輸入框內輸入:
ws2_32.lib
結果出現了下面的錯誤信息:
[Build Error]  [socketObject.exe] Error 1 
我查了Compile Log得到的關鍵log信息是:
g++.exe: ws2_32.lib: No such file or directory


原來是找不到 ws2_32.lib,我檢查了一下C:\Dev-Cpp\lib\下的庫文件,發現根本就


沒有ws2_32.lib這個文件。
於是上網搜了一下,有網友說對於Dev-c++應該是libws2_32.a
天,
原來是這個文件。
我很高興的將這個lib文件加到linker中,興奮地去編譯,結果仍然是:
g++.exe: libws2_32.a: No such file or directory
草,真是氣人。
我接着點擊 linker 區域下方的一個按鈕:Add Library or Object
用這個方法將libws2_32.a添加到linker: C:/Dev-Cpp/lib/libws2_32.a
這次編譯竟然順利通過了。


我將這次的遇到的問題及其解決過程記錄下來,希望對其他的朋友有幫助。
也在此謝謝其他朋友對我的指點。
在網上搜到的相關信息我也羅列到下面:


在工程裏已經#include <winsock2.h>了結果還是報錯,鬱悶死了,我用的是Dev-C++,起先還以爲是IDE的問題,結果換成VC6.0還是同樣的錯誤。最後在網上終於找到問題的原因,很快搞定了。順便做一下筆記,以防以後再出現這種問題。
VC6.0下的錯誤信息:
error LNK2001: unresolved external symbol __imp__socket@12
error LNK2001: unresolved external symbol __imp__WSAStartup@8
Dev-C++下的錯誤信息:
[Linker error] undefined reference to `WSAStartup@8' 
[Linker error] undefined reference to `socket@12'


錯誤原因:因爲沒有聯接socket庫ws2_32.lib。
解決辦法:對於VC6.0要在porject/settings的link頁面中object/library modules中添ws2_32.lib就可以了;對於Dev-C++同樣在工程/工程屬性的參數頁面中連接器那一欄中添加庫,這時必須找到庫文件的目錄,對於Dev-C++的對應庫文件是libws2_32.a,在軟件安裝下lib文件夾中可以找到相應的庫文件。
總結:所有運用到WinSock2的程序在編譯連接時都要用的該庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章