C++调用C#dll问题总结

本文分享了C++调用C#DLL接口的实际经验,包括如何正确引入DLL、解决运行时问题、对象定义及字符串类型转换技巧,适合跨语言编程爱好者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发一个接口需要用C++调用C#的接口,总结一些自己在调用接口时遇到的问题以及解决方法与大家共同学习;
调用的引入
1.C++调用C#dll时需要使用#using<./*.dll>或者使用#using"./**.dll"进行包含所使用的dll;
2.使用using namespace 程序集(assembly)::类名(classname)进行引用程序集或类
3.声明引用对象时需要在变量之前添加^;
编译阶段
包含路径不正确
调用
dll位置存在问题
在引入库的时候可以引入,但在运行时一直存在该问题,经过排查一部分是将所使用的dll放在C:\Windows\System32或Debug所在目录下,但无法成功,后将其放在启动应用的目录下可以运行。

对象定义与C++与C#字符串类型转换
using namespace system;
system::string ^ str =gcnew system::string("");

/将char*转换为System::String^
String^ str1= System::Runtime::InteropServices::Marshal::PtrToStringAnsi((IntPtr)ch1);

//System::String^转换为char*
char* ch2 = (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(str1);
Console::WriteLine(str1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值