C 呼叫C 的DLL實現方法

2021-08-09 19:47:58 字數 2318 閱讀 7864

具體的實現步驟如下:

一、建立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 在專案...