一、 c++呼叫c++生成的dll
1. 生成dll,使用mfc dll選項生成乙個dll工程
step 1
在cpp檔案中新增
extern "c" int _cdecl add(int d1, int d2)
extern "c" int _stdcall sub(int d1, int d2)
step2
在.h檔案中新增
#define dllexport extern "c" __declspec(dllexport)
dllexport int _cdecl add(int d1, int d2);
dllexport int _stdcall sub(int d1, int d2);
step3
增加乙個給呼叫者使用的.h檔案,在檔案中新增
#define dllimport extern "c" __declspec(dllimport)
dllimport int _cdecl add(int d1, int d2);
dllimport int _stdcall sub(int d1, int d2);
2. 新建乙個普通工程,把之前的.h、.dll、.lib檔案拷貝至目標資料夾內
step1 新增.h檔案至工程資料夾中
step2 將.lib檔案引用至工程中
step3 #include ".h"檔案
step4 呼叫.h中的函式
二、 c#呼叫c++生成的dll
1. 生成dll,使用mfc dll選項生成乙個dll工程
step1
在cpp中新增
extern "c" int _cdecl add(int d1, int d2)
extern "c" int _stdcall sub(int d1, int d2)
extern "c" int _cdecl multiple(int a,int b)
extern "c" int _stdcall divide(int a,int b)
else
}step2
在.h中新增
#define dllexport extern "c" __declspec(dllexport)
dllexport int _cdecl add(int d1, int d2);
dllexport int _stdcall sub(int d1, int d2);
extern "c" int _cdecl multiple(int a,int b);
extern "c" int _stdcall divide(int a,int b);
step3在.def中新增
exports
; 此處可以是顯式匯出
multiple
divide
2. 新建乙個普通工程,把之前的.h、.dll、.lib檔案拷貝至目標資料夾內
step1
新增乙個類,在這個類中將需要用到的函式引用進來
[dllimport("dllexport.dll", entrypoint = "add", callingconvention = callingconvention.cdecl)]
public static extern int add(int a, int b);
[dllimport("dllexport.dll", entrypoint = "sub", callingconvention = callingconvention.stdcall)]
public static extern int sub(int a, int b);
[dllimport("dllexport.dll", entrypoint = "multiple", callingconvention = callingconvention.cdecl)]
public static extern int multiple(int a, int b);
[dllimport("dllexport.dll", callingconvention = callingconvention.stdcall)]
public static extern int divide(int a, int b);
step2
使用新建的類中引入的函式
三、 關於兩種呼叫方式
無論那種呼叫方式,為了保證生成函式的名稱不變化需要加上extern "c"
使用c++呼叫c++生成的dll時,這裡都是採用的隱式呼叫方法,使用了extern "c" __declspec(dllexport)和extern "c" __declspec(dllimport)
來呼叫dll,add方法使用了_cdecl呼叫方式,sub方法使用了_stdcall呼叫方式
使用c#呼叫c++生成的dll時,也是採用了隱式呼叫方法,除了使用extern "c" __declspec(dllexport)和extern "c" __declspec(dllimport)外
還使用了標準的_cdecl/_stdcall呼叫方式,使用標準的方式時需要在.def檔案中記錄使用的函式名稱
C 呼叫C 生成的dll
本文將介紹c 中通過dll來呼叫c 首先建立c 的 類庫 工程cshapedll。然後輸入如下 csharp view plain copy c 通過dll呼叫c by morewindows using system using system.collections.generic using s...
C 生成dll呼叫
用visual c 生成的dll檔案已經和以前的dll檔案有了本質上的區別。用visual c 生成的dll檔案在程式設計中更多的表現為一種類 class 或者類庫 class library 製作乙個元件 1.首先建立乙個新類庫工程檔案 file new project visual c proj...
C 呼叫外部C 生成DLL
生成dll c 檔案部分內容 h檔案 外部呼叫函式宣告 pragma once ifndef kinectdatagenerator h define kinectdatagenerator h initialize kinect extern c declspec dllexport void k...