具體的實現步驟如下:
一、建立c# dll,需要指定應用型別為「類庫」,**
namespace cslib
set}
}}
二、c++客戶程式,是個控制台應用,**:
#using "..\debug\cslib.dll"
using namespace cslib;
int _tmain(int argc, _tchar* argv)
三、這裡有幾點要記住:
1.使用#using引用c# dll,而不是#include;
2.別忘了using namespace cslib;
3.使用c++/clr語法,採用正確的訪問託管物件,即:使用'^',而不是星號'*'。
4.c++ 編譯設定一定設定為:支援
公共語言執行時支援(/clr)
四、從c#的dll獲取的字串為 system;;string^,在c++中需要轉為轉為string,請注意;
對於很多和我一樣的老c++程式設計師來講,如果不能與時俱進,不但會倍感失落,還會真的自絕於天下。
比如c#有很多好的元件, 如npoi ,如。。。 ,怎麼在c++中也自如呼叫呢,這樣不用去學習c#,不用換刀,也可以達到同樣的目的。
網上看了半天,找到的資料要麼太老,要麼不對,乾脆自己除錯一遍。下面把體會說一說。
除錯環境:visual studio 2010 .
一、c#寫的類庫:
using system;
using system.collections.generic;
using system.text;
namespace classlibrary1
public void helloworld()}}
// c#程式配置,一定是類庫
二、c++ 程式
共有三個程式檔案
(1) 主程式
// test1.cpp : 定義控制台應用程式的入口點。
/////
////
在c++ 專案屬性 [配置]-[常規] 中,公共語言執行時支援,一定要選擇「公共語言執行時支援」
//#include "stdafx.h"
#include "yotopcompany.h"
#using "..\classlibrary1\bin\debug\classlibrary1.dll"
//引用c#類庫
using namespace classlibrary1;
// 宣告命名空間,非必須
int _tmain(int argc, _tchar* argv)
(2) c++ 中自己編寫的乙個類
// yotopcompany.h
#pragma once
ref class yotopcompany
;(3) c++編寫的類的cpp檔案
#include "stdafx.h"
#include "yotopcompany.h"
yotopcompany::yotopcompany(void)
yotopcompany::yotopcompany(char*_name ,char* _address,char* _phonenumber)
(4) c++ 程式配置
三、如果還有疑問,請參考 msdn 文章:
// how to call a managed dll from native visual c++ code in visual studio.net or in visual studio 2005
// 如何在 visual studio.net 或 visual studio 2005 中的本機 visual c++ **中呼叫託管的 dll
// 四、總結:
1)用c#寫任何的類庫
2)c++ 中要引用此類庫
3)建立c#物件時要用gcnew ;
4) c++ 編譯設定一定設定為:支援
公共語言執行時支援(/clr)
4) 自身的c++類要用 ref class 定義。
希望關心上述主題的朋友能夠如願以償,good luck!
C 呼叫C 寫的dll的實現方法
dll的編寫,首先是開啟vs新建乙個c 的控制台程式,下一步後選擇dll以及空文件即可。然後就是新增乙個類新增乙個方法。方法排頭固定格式 extern c declspec dllexpowww.cppcns.comrt 後面加方法即可。例如如下 c putfbklrkdll 複製 如下 exter...
C 呼叫C 的DLL程式方法
using system using system.collections.generic using system.linq using system.text namespace cslib set test.cpp 主專案檔案。include stdafx.h using namespace ...
C 呼叫DLL庫的方法
1 在c 專案的根目錄下,建立乙個資料夾,叫 thirdparty 在thirdparty裡面新建 include lib 資料夾。include中存放dll庫相關的所有標頭檔案,lib中存放dll庫相關的lib檔案。2 在專案屬性中,vc 目錄 包含目錄 中新增新建的include目錄 3 在專案...