前文
https://blog.csdn.net/github_38485912/article/details/114591017
前言
为了测试c++调用的c#类库需要调用其他c#类库的情况(也不知道是不是应该这样形容,如下图,目的是调用CameraControl.Devices,但是其需要调用下面两个库)
对前一个项目进行一些修改
c#部分
1. 解决方案--添加--新建项目--类库( .NET Framework)
添加CSharpTestDll2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharpTestDll2
{
public class TestClass2
{
public int fnAdd(int iAdd1, int iAdd2)
{
return iAdd1 + iAdd2;
}
}
}
2. 修改CSharpTestDll代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CSharpTestDll2;
namespace CSharpTestDll
{
public class TestClass
{
public int fnMul(int iMul1, int iMul2)
{
TestClass2 test = new TestClass2();
int t = 0;
int i;
for(i=0;i< iMul2;i++)
{
t = test.fnAdd(t, iMul1);
}
return t;
}
}
}
CSharpTestDll项目--生成依赖项--项目依赖项--CSharpTestDll2(不知道是不是需要)
CSharpTestDll项目--引用--添加引用CSharpTestDll2
3. 解决方案--生成解决方案
两个项目会生成两个dll文件,都在启动项目CSharpTestDll编译生成的bin文件夹下
c++部分
修改c++代码
#include <Windows.h>
#include <tchar.h>
#include <iostream>
#using "..\\Debug\\CSharpTestDll.dll"
using namespace CSharpTestDll;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
TestClass ^ c = gcnew TestClass();
cout << c->fnMul(2, 3) << endl;
getchar();
return 0;
}
将c#生成的两个dll放到和c++编译生成的exe同一路径下
不需要添加引用,直接运行就行
项目代码:
https://download.csdn.net/download/github_38485912/15707218