介面還是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("這樣就可以在c#中使用這個函式了。testdll.dll
", entrypoint = "
testadd
", callingconvention =callingconvention.cdecl)]
private
static
extern
int csharptestaddfun(int a, int b);
複雜點就是字串傳遞了。
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...