一、使用/clr編譯MFC可執(zhí)行文件或規(guī)則C# DLL函數(shù).
1、打開“項(xiàng)目屬性”對話框,方法是右鍵單擊“解決方案資源管理器”中的項(xiàng)目并選擇“屬性”。
2、展開“配置屬性”旁邊的節(jié)點(diǎn)并選擇“常規(guī)”。在右側(cè)窗格中的“項(xiàng)目默認(rèn)值”下,將“公共語言運(yùn)行庫支持”設(shè)置為“公共語言運(yùn)行庫支持(/clr)”。
3、在相同的窗格中,確保將“MFC的使用”設(shè)置為“在共享DLL中使用MFC”。
4、在“配置屬性”下,展開“C/C++”旁邊的節(jié)點(diǎn)并選擇“常規(guī)”。請確保將“調(diào)試信息格式”設(shè)置為“程序數(shù)據(jù)庫/Zi”(而不是“/ZI”)。
5、在“配置屬性”下,選擇“C/C++”,然后選擇“代碼生成”。請確保將“運(yùn)行時庫”設(shè)置為“多線程調(diào)試DLL(/MDd)”或“多線程DLL(/MD)”之一。
二、在代碼引用需要的dll.
using <mscorlib.dll>.
using "DownloaFiles.dll" //換成需要的dll文件。
using namespace System;
using namespace ADMessage_test; //換成dll中類所使用的namespace.
三、在C# DLL函數(shù)調(diào)用代碼前加入#pragma managed
這是manage和unmanage混合編程在MFC下的一種實(shí)現(xiàn)方式。
以上介紹C++調(diào)用C# DLL函數(shù),希望對你有所幫助。
四 、幾點(diǎn)要記住:
1 使用#using引用C# DLL,而不是#include.我就是想當(dāng)然的使用了后者,所以浪費(fèi)了一上午的時間;
2 別忘了using namespace CSLib;
3 使用C++/clr語法,采用正確的訪問托管對象,即:使用帽子‘^’,而不是星星‘*’。
PS:附上自己成功運(yùn)行C++代碼
#include "stdafx.h"
#include <iostream>
//#using "..\..\SFCSDLL.dll" //右擊項(xiàng)目-->引用...,添加新引用,將DLL添加到項(xiàng)目中,可以不用此行代碼
using namespace std;
using namespace SFCSDLL;
int _tmain(int argc, _TCHAR* argv[])
{
Class1 ^c = gcnew Class1();
c->SFCSDLL_Create_Connection("127.0.0.1", 0, 0, 0, 0);
c->SFCSDLL_Get_DLLVersion();
c->SFCSDLL_Close_Connection();
cout<<"end...";
system("pause");
return 0;
}
posted on 2013-03-12 15:13
Ke 閱讀(3561)
評論(0) 編輯 收藏 所屬分類:
C#