關於C 呼叫VC DLL

2022-02-12 10:46:06 字數 1205 閱讀 5157

由於在c#呼叫vc的dll檔案不能直接引用,那麼,我們可以通過以下辦法解決。

dll檔案分為託管和非託管,在呼叫託管的很好辦,直接被使用的需要引用,間接使用的需要拷貝到bin目錄下.非託管的處理會比較麻煩,實際上,你拷貝到bin沒有任何幫助,因為clr會把檔案拷貝到乙個臨時目錄下,然後在那執行web,而clr只會拷貝託管檔案,這就是為什麼我們明明把非託管的dll放在了bin下卻依然提示不能載入模組了.那麼,就可以直接放在system32的目錄下,或者自己重新建個資料夾。

呼叫dll中的方法

首先,應該在c#語言源程式中宣告外部方法,其基本形式是:

[dllimport("dll檔案")]

修飾符extern返回變數型別方法名稱(引數列表)

如:

//////

解密字串

//////

需要解密的字串

///返回解密後的字串

[dllimport(

"desdll.dll

", entrypoint ="

desec

", exactspelling

=false

, callingconvention

=callingconvention.cdecl)]

public

static

extern

string

deciphering(

string

strdeciphering);

//////

解密字串

//////

需要解密的字串

///返回解密的字串

public

string

getdeciphering(

string

strdec)

對於

dllimport 必須在方法的前面(具體參考msdn),

entrypoint

= "desec" 表示dll內的函式名(寫錯了會提示找不到 入口)。在

deciphering(

string

strdeciphering)

中的引數表示函

數的需要的引數。

只有需要用的時候直接呼叫

getdeciphering(

string

strdec) 方法即可。

C 呼叫VC dll輸出引數

最近做專案需要把以前vc寫的程式整合到vs2005來,用c 寫的,以前vc的動態連線庫寫好了,重寫比較麻煩,讓c 呼叫vc dll就好了。但碰到了乙個問題 vc中作為輸出引數的char 型別的變數應該怎樣申明才能正確輸出資料呢?一般說來,在vc中一般的輸出引數都為指標或陣列的形式,如果是一般型別的指...

vb呼叫vc dll檔案

關於dll的建立與呼叫使用vc 的嚮導即可。具體操作如下 開啟選單 file new 選擇 projects win32 dynamic link library 選擇 a dll project 即可。這時系統會自動生成3個檔案 cpp,stdafx.cpp,stdafx.h。之後將入口函式dll...

VB呼叫VC DLL的引數問題

問題示例如下,假設vb中申明乙個dll中的匯出函式為 public declare function somefunc lib test.dll alias somefunc byval name as string as long 那麼vc做的dll中的匯出函式原型是什麼?因為vb中的string...