C 呼叫C 匯出(dllexport)方法

2022-04-30 21:57:24 字數 1598 閱讀 6944

開發環境:

visual studio 2013+win10

一:建立c++專案

在vs中建立c++project(win32 project),需要注意的是,要勾選:

additional options:export symbols

在專案標頭檔案中放入**:12

3#define waocvdll_api __declspec(dllexport)

// 自定義方法

extern_c waocvdll_apiint_stdcall fit(intwidth,intheight, wchar_t*image,float*firstpoint,intpointslength);

然後再cpp檔案中實現該方法:12

34waocvdll_apiint_stdcall fit(intimagewidth,intimageheight, wchar_t*image,float*firstpoint,intpointslength)

ps:waocvdll_api 因各自專案不同而不同

在編譯之前需要設定專案屬性:

c/c++ --> advanced --> compile as:compile as c++ code

ps:c++專案的平台結構一定要和呼叫專案的一致(若是x64就都是x64,反之亦然)。

ok,build專案,得到dll

二:建立呼叫專案(c#控制台)

呼叫時需要注意的是:12

[dllimport(@"你的dll存放路徑", entrypoint ="c++中定義的方法名字")]

externstaticunsafeintfit(intwidth,intheight,char* image,float* firstpoint,intpointslength);

之後就是在c#中呼叫非託管**了,需要注意的是:

1.設定專案屬性:allow unsafe code

2.**中新增unsafe**塊

ok,執行控制台專案,專案正常執行!

關於C 的dllexport和dllimport

dllexport和dllimport均是對c 對dll動態庫中的匯出類進行處理的。在dll中為匯出類,在呼叫dll工程的exe中為匯入類。declspec dllexport 宣告乙個匯出函式,是說這個函式要從本dll匯出。我要給別人用。一般用於dll中省掉在def檔案中手工定義匯出哪些函式的乙個...

C 呼叫C 庫引數為匯出函式

c 庫的介面定義如下 ifdef testdll exports define testdll api declspec dllexport else define testdll api declspec dllimport endif strmsg 輸入引數,pretmsg 輸出引數 testd...

C 呼叫DLL C 缺失匯出函式

正在折騰directshow輪子.不過已經是第二次編寫相關的dll.正想用c 除錯一下dll.結果報 試圖載入格式不正確的程式 這裡已經準確設定了目標平台.c 試圖載入格式不正確的程式 所以,dll編譯出來終究還是得用工具測一測,然而depends walker卻因dll結構複雜莫名假死.返璞歸真用...