C++调用C# dll 未能加载文件或程序集

C++调用C# dll 未能加载文件或程序集,第1张

C++调用C# dll 未能加载文件或程序集 1. 调用前准备:

(1)C# 类库项目正常编译
(2)C++项目设置“公共语言运行时支持(/clr)”;

(3)C++项目添加C# dll路径及申明dll 所在命名空间

#using "..\CSDll\bin\Debug\CSDll.dll"
using namespace CSDll;

(4)C++项目创建托管对象,并访问其属性

int main()
{
	Person ^p = gcnew Person("aaa", 28);

	std::cout << p->Age << std::endl;

(5)编译成功。
但是启动程序时报错:找不到dll

2. 原因分析:

(1)dll目录错误?不可能,否则编译不会通过;
(2)dll还有其他依赖的dll?就一个简单的测试dll,没有添加其他依赖dll;

3. 解决方案:

方法(1)将C# dll 拷贝到C++项目的可执行目录下,并更新#using 目录(不推荐,因为C# dll每次重新编译后都需要手动复制,不利于项目管理);

方法(2)将C# dll项目的生成目录更改至和C++生成目录二者同目录;

方法(3)C++项目设置延迟加载dll,
参见https://blog.csdn.net/jiangli198867/article/details/103806761
和https://blog.csdn.net/d4567star/article/details/82993777
同样的,没有成功,待后续慢慢研究吧

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5593852.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存