1. 程式人生 > >函式匯出方式不對,導致的“error link2019 無法解析的外部符號 ”

函式匯出方式不對,導致的“error link2019 無法解析的外部符號 ”

          最近工作中,需要使用proj4庫,因為Proj4庫存是C語言dll庫。使用C++程式呼叫的時候,出現了無法解析的2019錯誤。

         查閱了csdn,原來是匯出函式寫的不對。

情況一: C++ dll,供C++可執行程式呼叫

</pre><pre name="code" class="cpp">#ifdef GEOSUTIL_EXPORTS
#define MICAPSURPORT_API __declspec(dllexport)
#else
#define MICAPSURPORT_API __declspec(dllimport)
#endif

情況二: C語言的dll,供C++可執行程式呼叫 

// MyCFuncs.h
#ifdef __cplusplus
extern "C" {  // only need to export C interface if
              // used by C++ source code
#endif

__declspec( dllimport ) void MyCFunc();
__declspec( dllimport ) void AnotherCFunc();

#ifdef __cplusplus
}
#endif

如果需要將 C 函式連結到 C++ 可執行檔案,並且函式宣告標頭檔案沒有使用上面的技術,則在 C++ 原始檔中新增下列內容以防止編譯器修飾 C 函式名:

extern "C" {
#include "MyCHeader.h"
}

             參考網址:csdn