1、在C++的project里面,先將屬性的配置類型修改為動態庫dll,同時把平台修改為x64,否則無法生成dll,必須利用__declspec(dllexport)導出個東西,類或者函數都可以,否則C++/Clr項目會提示無法打開文件***.lib,比如
#pragma once
#ifndef TEST1
#define TEST1 __declspec(dllexport)
#else
#define BM3D_DLL_CLASS __declspec(dllimport)
#endif
class TEST1 Test1
{
public:
Test1();
int dosomething();
};
2、在C++/Clr的project里面,先將屬性設置為公共語言運行時支持,再添加第一步生成的dll文件,注意,添加dll文件不能使用瀏覽找到文件位置的方式,必須點擊項目找到前面生成的dll,如下圖所示:
3、添加完以后,中間層的類前面需要加上ref,最好把類放到一個namespace里面,比較符合C#的使用方式(具有封裝性),后面就可以用using namespace的方式調用了,而不是哪里都能調用;
4、新建一個C#的project來調用C++/Clr生成的dll,注意,需要修改一下C#的輸出路徑到跟前面Project1和Project2的輸出路徑同一個地方,否則會提示缺少Project2缺少依賴項;
5、至此,一切OK,以后只需要直接生成C#項目就行了,C++/Clr和C++的項目會一起生成(因為有依賴關系);