一、使用/clr編譯MFC可執行文件或規則C# DLL函數.
1、打開“項目屬性”對話框,方法是右鍵單擊“解決方案資源管理器”中的項目并選擇“屬性”。
2、展開“配置屬性”旁邊的節點并選擇“常規”。在右側窗格中的“項目默認值”下,將“公共語言運行庫支持”設置為“公共語言運行庫支持(/clr)”。
3、在相同的窗格中,確保將“MFC的使用”設置為“在共享DLL中使用MFC”。
4、在“配置屬性”下,展開“C/C++”旁邊的節點并選擇“常規”。請確保將“調試信息格式”設置為“程序數據庫/Zi”(而不是“/ZI”)。
5、在“配置屬性”下,選擇“C/C++”,然后選擇“代碼生成”。請確保將“運行時庫”設置為“多線程調試DLL(/MDd)”或“多線程DLL(/MD)”之一。
二、在代碼引用需要的dll.
using <mscorlib.dll>.
using "DownloaFiles.dll" //換成需要的dll文件。
using namespace System;
using namespace ADMessage_test; //換成dll中類所使用的namespace.
三、在C# DLL函數調用代碼前加入#pragma managed
這是manage和unmanage混合編程在MFC下的一種實現方式。
以上介紹C++調用C# DLL函數,希望對你有所幫助。
四 、幾點要記住:
1 使用#using引用C# DLL,而不是#include.我就是想當然的使用了后者,所以浪費了一上午的時間;
2 別忘了using namespace CSLib;
3 使用C++/clr語法,采用正確的訪問托管對象,即:使用帽子‘^’,而不是星星‘*’。
PS:附上自己成功運行C++代碼
#include "stdafx.h"
#include <iostream>
//#using "..\..\SFCSDLL.dll" //右擊項目-->引用...,添加新引用,將DLL添加到項目中,可以不用此行代碼
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 閱讀(3551)
評論(0) 編輯 收藏 所屬分類:
C#