1. 程式人生 > >在C++控制檯專案中使用C工程程式碼時的注意,避免出現error LNK2019: 無法解析的外部符號

在C++控制檯專案中使用C工程程式碼時的注意,避免出現error LNK2019: 無法解析的外部符號

當我們在寫 C++控制檯專案時候,有時用到一些執行緒的演算法程式碼專案,這些程式碼專案是用c寫的。當使用時,需要在c的標頭檔案中標註如下內容,才能使得cpp檔案能夠編譯使用c的函式等,才避免在編譯時候出現error LNK2019: 無法解析的外部符號###,在_main中引用,這樣的錯誤。如下面:

號 "int __cdecl sift_features(struct _IplImage *,struct feature * *)" ([email protected]@[email protected]@[email protected]@@Z),該符號在函式 _main 中被引用


1>picturecopy1.obj : error LNK2019: 無法解析的外部符號 "struct _IplImage * __cdecl stack_imgs(struct _IplImage *,struct _IplImage *)" ([email protected]@[email protected]@[email protected]@Z),該符號在函式 _main 中被引用
1>picturecopy1.obj : error LNK2019: 無法解析的外部符號 "void __cdecl fatal_error(char *,...)" (
[email protected]
@YAXPADZZ),該符號在函式 _main 中被引用

1>C:\Users\acer\documents\visual studio 2010\Projects\picturecopy1\Debug\picturecopy1.exe : fatal error LNK1120: 7 個無法解析的外部命令。

此時需要這樣解決:

在呼叫函式的xx.h檔案的首尾新增:

#ifdef __cplusplus (其中__cplusplus是cpp中自定義的一個巨集!!!)

extern "C"{

#endif

//-------------開始寫.h

#include<stdio.h>

xx.h的全部內容。

void function();

......

#ifdef __cplusplus

}

#endif

按照以上格式即可以不出現編譯error LNK2019: 無法解析的外部符號。。。問題。


相關推薦

C++控制檯專案使用C工程程式碼注意避免出現error LNK2019: 無法解析外部符號

當我們在寫 C++控制檯專案時候,有時用到一些執行緒的演算法程式碼專案,這些程式碼專案是用c寫的。當使用時,需要在c的標頭檔案中標註如下內容,才能使得cpp檔案能夠編譯使用c的函式等,才避免在編譯時候出現error LNK2019: 無法解析的外部符號###,在_main中

Vs 出現 error LNK2019: 無法解析外部符號的解決參考

    今天編輯動態庫連結生成靜態檔案,但是呼叫dll封裝的類的幾個函式後出現如下錯誤: 錯誤: 1>正在連結... 1>   正在建立庫 ..\ssnmate\Debug\QQDLL.lib 和物件 ..\ssnmate\Debug\QQDLL.exp 1&g

C專案如何轉C++專案——error LNK2019: 無法解析外部符號 "unsigned int __cdecl

實驗的時候,需要呼叫的庫是C++版本,而進行操作的源專案是C版本,這個時候就需要將C版本的專案轉化為C++。 C語言專案轉化為C++專案還是比較簡單的。 步驟: 把需要修改的.c 檔案直接改成 .cpp。 針對.cpp的報錯進行一一修改,基本是記憶體

c++連接mysql數據庫出現無法解析外部符號的問題

vs、解析外部符號include,lib文件夾都已經拷到了項目根目錄,並且設置好了路徑,生成就會出現無法解析的外部符號,提示我無法轉到函數的定義,最後發現vs2017默認win32,但是我的程序集64位的。更改後,重新設置目錄,路徑即可。c++連接mysql數據庫出現無法解析外部符號的問題

C++】error LNK2019: 無法解析外部符號

轉:C++ error LNK2019: 無法解析的外部符號 錯誤解決方案 今天在實現類模板特例化的時候遇到一個問題,就是把類模板函式實現放到類的cpp檔案中,然後在main函式中使用這個類的時候,就會出現無法解析的外部符號:函式名(xxxx)等錯誤,那麼出現這個錯誤的原因是什麼呢? 原

C++】error LNK2019: 無法解析外部符號 [email protected

原因:c語言執行時找不到適當的程式入口函式 解決:對於控制檯應用程式 1.選單中選擇 Project->Properties, 彈出Property Pages視窗 2.在左邊欄中依次選擇:Configuration Properties->C/C++->

Visual Studio 2013 C++ 呼叫mysql錯誤 error LNK2019: 無法解析外部符號
error LNK2019: 無法解析外部符號C++程式設計出現問題的解決辦法)

今天,練習程式設計時,照著書本敲程式碼,居然出現了問題,太詭異了。而且出現的是:error LNK2019: 無法解析的外部符號 這樣詭異的問題,著實困擾了我10分鐘。然後我找到了解決辦法——補充預設不帶引數的建構函式的函式體。 ####################

C++ error LNK2019: 無法解析外部符號 錯誤解決方案

今天在實現類模板特例化的時候遇到一個問題,就是把類模板函式實現放到類的cpp檔案中,然後在main函式中使用這個類的時候,就會出現無法解析的外部符號:函式名(xxxx)等錯誤,那麼出現這個錯誤的原因是什麼呢?原因就是現在的編譯裡不支援模板函式的申明和實現分開,要像上面那樣使用

C++的error LNK2019: 無法解析外部符號編譯錯誤

1>Proxy.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函式 "public: enum ProxyStatus __thiscall CProxy::ConnectProxyServer(u

C++】error LNK2019: 無法解析外部符號 "public: void __thiscall

出現這個錯誤,應該首先檢視“#include”語句是否包含,或者是否包含正確。符號無法解析意味著編譯器知道有這個符號存在,也就是有宣告,但在連結時,找不到實現程式碼,那麼就去看看報錯的這個函式有沒有實現程式碼。如果它們的確已經有了,還是出現這個錯誤,就把它們重新編譯一下。

C語言自己寫的函數出現error LNK2001: 無法解析外部符號

最近寫作業,出現 main.obj : error LNK2001: 無法解析的外部符號 "void __cdecl creatlist(struct list_type *)" (?creatlist@@YAXPAUlist_type@@@Z), 看網上的教材,是外部引用

錯誤 1 error LNK2019: 無法解析外部符號 "public: __thiscall Distance::Distance(int)" (??0Distance@@QAE@H@Z)符號在函數 _main 被引用

his 無法 析構函數 this distance AI sta 語法 解析 錯誤: 錯誤 1 error LNK2019: 無法解析的外部符號 "public: __thiscall Distance::Distance(int)" (??0Distance@@QAE@

error LNK2019-無法解析外部符號 _main-該符號在函式 ___tmainCRTStartup 被引用

問題分析: 因為Win32 console Application的入口函式是Main(),而Win32 Application的入口函式才是WinMain() 解決方案: 右鍵專案,開啟【屬性】頁,【配置屬性】——【連結器】——【系統】中的【子系統】改為【視窗 (/SUBSYSTEM:WINDOWS)

windows下QT配置pthread解決main.obj:-1: error: LNK2019: 無法解析外部符號 __imp_pthread_create符號在函式 main 被引用

QT中使用msvc2017_64編譯時,本來不支援pthread。但是又想用pthread來寫程式,就在網上各種查詢辦法,不過好像都不太可以,會報錯: main.obj:-1: error: LNK20

error LNK2019: 無法解析外部符號符號在函式 被引用

#include "cocos2d.h" class GameLayer : public cocos2d::CCLayer { public: GameLayer(); ~GameLayer(); virtual bool init(); CREATE_

error LNK2019: 無法解析外部符號 _main符號在函式 ___tmainCRTStartup 被引用

#include <Windows.h> HINSTANCE hinst;//例項控制代碼太重要了,要用一個全域性變數將其儲存起來 HWND hwnd; LRESULT CALLBACK MainWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM