net平台上,呼叫dll檔案有2種含義:
1、呼叫託管dll,即使用.net平台開發的dll,屬於託管**。
2、呼叫非託管dll,即傳統的dll,一般是c++,vb,delphi等等開發出來的,屬於非託管**。
對於託管呼叫,舉例如下:
比如一段座標轉換的程式,在名字空間mydll裡,有三個類
在函式類裡有兩個方法。
using system;
using system.collections.generic;
using system.linq;
using system.text;
//座標轉換方法
namespace mydll
public class zb_xy
public class transcode
//座標轉換函式 四引數
public int trans_xy_fmodel(double x, double y, out double outx, out double outy, zbtrans_4para para4)
public static double trans_jd_hd(double ang)
ang_d = math.floor(ang);
ang_f = (ang * 100 - ang_d * 100);
的計算會出現誤差,計算的分值為34.999999999 這樣會引起很大的偏差 下面的if語句來處理這個問題
if (math.abs(math.floor(ang_f) - ang_f) > 0.6)
else
ang_m = (ang * 10000 - ang_d * 10000 - ang_f * 100);
if (ang_m < math.pow(10, -10))
ang_hd = (((ang_d * 3600 + ang_f * 60 + ang_m) / 3600) * pi) / 180;
if (flag_1 == false)
else}}
}將上述**儲存為*.cs檔案,通過呼叫:
csc/target:library /out:name.dll *.cs
即可以編譯成name.dll檔案
補充:win+r 、cmd、在cmd視窗,輸入cd加乙個空格 將c:\windows\microsoft.net\framework\v4.0.30319資料夾拖到視窗
不同版本的net.framework檔名不一樣。然後就可以呼叫上面的函式了。
library後面要有乙個空格,否則會報錯
fatal error cs2019: /target 的目標型別無效:
必須指定「exe」、「winexe」、「library」或「module」
呼叫時:
1、專案裡的references上右鍵,選擇reference,選擇brouse選項卡,瀏覽找到編譯的dll,確定新增
,該dll就被新增到專案的bin裡。
2、如果有命名空間,要新增命名空間,如我的是mydll,如果沒有命名空間,則不用新增
using system;
using system.collections.generic;
using system.linq;
using system.text;
//using system.runtime.interopservices;
using mydll;
namespace dll
\n", outx, outy);
console.readkey(); }}
}3、對於有命名空間的dll,如果沒用引用命名空間,當需要例項化物件時,要帶上命名空間
如 mydll.zb_xy zbxy=new zb_xy();靜態方法不用例項化物件。用mydll.trans_jd_hu直接呼叫
Python呼叫C 動態鏈結庫
1 安裝vs2010,或者以上的版本 2 建立win32應用程式,應用程式型別選擇dll。由於python是64位的,因此需要將win32程式設定為x64,即64位的。3 編寫程式add.cpp 4 編寫標頭檔案add.h。由於 比較少,也可以申明直接放在add.cpp中,此處為了規範,還是分開寫的...
C 生成 呼叫動態鏈結庫
一 需求描述 1 用 生成動態鏈結庫 2 用c 呼叫動態鏈結庫 二 生成動態鏈結庫 1 新建類庫 2 新增welcomeinfo類 如下 僅供測試用,例子很簡單 1 using system 2using system.collections.generic 3using system.linq 4...
呼叫靜態鏈結庫和動態鏈結庫
呼叫靜態鏈結庫 靜態鏈結庫由.h和.lib檔案組成,h檔案在工程中用來宣告,而.lib檔案包含供外界呼叫的函式的原型。vc 6.0中呼叫靜態鏈結庫.lib共3種方法 1.首先使用語句 include lib.h 並將lib.h拷貝到當前工程目錄下 接著對staticlib smp.lib使用語句 p...