C 呼叫C 編寫的dll

2022-09-15 02:51:08 字數 2553 閱讀 9453

介面還是c#寫的方便點,主要是有乙個視覺化的編輯器,不想畫太多的時間在介面上。但是自己又對c++了解的多一些,所以在需要乙個良好的介面的情況下,使用c++來寫**邏輯,將其編譯成乙個dll,然後用c#寫介面,

extern"c

" __declspec(dllexport) int testadd(int a,int

b)//

乙個簡單測試字元型別的例子

extern"c

" __declspec(dllexport) void

teststring(

const

char*cszbuffer,

char*szbuffer,

intnbuffsize)

else

if(strcmp(cszbuffer,"

type2

") == 0

)

else}//

**函式型別定義

typedef int (callback *pmycallbackfun)( const

char*msgs);

extern"c

" __declspec(dllexport) int

testcallback(pmycallbackfun fun)

這裡匯出了三個函式,分別用來測試簡單型別引數傳遞,字串傳遞以及測試函式**。

//

這裡根據dll中的函式名填寫

[dllimport("

testdll.dll

", entrypoint = "

testadd

", callingconvention =callingconvention.cdecl)]

private

static

extern

int csharptestaddfun(int a, int

b); [dllimport(

"testdll.dll

", entrypoint = "

teststring

", callingconvention =callingconvention.cdecl)]

private

static

extern

int csharpteststring(string str, stringbuilder sb, int

size);

public

delegate

int mytestcallbackfun(string

str);

[dllimport(

"testdll.dll

", entrypoint = "

testcallback

", callingconvention =callingconvention.cdecl)]

private

static

extern

intcsharptestcallback(mytestcallbackfun fun);

//測試dll中加法函式

private

void button1_click(object

sender, eventargs e)

//測試dll中的字串

private

void button2_click(object

sender, eventargs e)

//給dll呼叫的**

private

int csharpcallbackfun(string

str)

private

void button3_click(object

sender, eventargs e)

呼叫過程簡單點就是先定義匯出函式:

[dllimport("

testdll.dll

", entrypoint = "

testadd

", callingconvention =callingconvention.cdecl)]

private

static

extern

int csharptestaddfun(int a, int b);

這樣就可以在c#中使用這個函式了。

複雜點就是字串傳遞了。

c# string對應c++中的const char*

c# stringbuilder對應c++中的char*

按鈕1按下,呼叫dll中的加法函式:

按鈕2按下,呼叫字串傳遞函式:

按鈕3按下,呼叫dll中的測試**函式:

C 呼叫C 程式編寫的dll

c 呼叫c 程式編寫的dll 比起 c 呼叫c 程式編寫的dll要方便得多。假定我已經有個cplusplusdll.dll,此dll是用c 寫的,下面的程式是c 呼叫的程式。注意dll要放到c 工程的bin目錄下的debug目錄下。using system using system.collecti...

C 中呼叫C 編寫的Dll

在vs2013中建立乙個win32控制台專案,單擊下一步,然後選擇dll。生成的工程目錄結構為 在自動生成的檔案中,dllmain.cpp 作為定義dll應用程式的入口點,它的作用跟exe檔案有個main或者winmain入口函式是一樣的。可以在目標cpp檔案 dllcxj.cpp 中編寫自己要實現...

C 呼叫delphi編寫的dll

技術實現 如何逐步實現動態庫的載入,型別的匹配,動態鏈結庫函式匯出的定義,參考下面巨集定義即可 define libexport api extern c declspec dllexport 第一步,我先從簡單的呼叫出發,定義了乙個簡單的函式,該函式僅僅實現乙個整數加法求和 libexport a...