问题描述:由于项目是C++下搭建的,需要调用C#下的dll,参考文章:在vs2019中使用C++调用C#生成的dll,简单实现实现,但是按照博主的操作步骤执行一遍后,发现在C#下创建的test_DLL.dll在引用后,错误提示 C2871 “test_DLL” : 具有该名称的命名空间不存在。
重新检查操作过程否漏掉或者误操作的情况,再次运行仍然报相同的错误。网上比对其他博主写的文章,原理和主要操作都是相同的,那么可以大胆的确定是我VS的环境不匹配。
接下来展开错误排查,在C#生成dll文件对属性设置中,对目标框架选择:.NET Framework 4.7.2,VS默认目标框架和参考的文章中的一样,所以并没有选择更改和调整:
但是在引用“test_DLL.dll”的C++项目中可以看到.NETFramework的Version:v4.0,这样就基本上确定了报错原因:.NETFramework版本号不匹配。
在C#库函数中在属性->应用程序->目标框架:.NETFramework 4,重新运行并引用。
备注:存在相同的问题,请查询一下自己项目的.NET Framework 框架版本,而不是不假思索的将其版本号更改为:4.0