关于C#调用C++ 的DLL传送字符串显示乱码的解决

摘要:
我想在C++中编写一些函数作为DLL供C#调用,但当我编写DLL并使用C#传递字符串参数时,它会在DLL中显示传输的字符串是乱码,并且DLL中的代码不能将这些字符串用于其他处理。当然,有些提示是正确的。调试后,我终于找到了问题的解决方案,如下图所示:extern“C”_ declspec(dllexport)intStrc(charstr[]){MessageBox(NULL,

最近在做一个程序,想把某些功能用C++写成DLL供C#调用,但是在写好DLL用C#传递字符串参数时,在DLL中显示传送过来的字符串是乱码,DLL里的代码根本无法用这些字符串进行其它的处理.为此,花了一天时间在全网翻了一遍,发现没有一篇能完美的解决问题的,当然也有部分的提示是正确的.在经过一翻调试后.终于找到解决问题的办法,在此写下以备忘,也给需要的人参考,水平有限,高手略过了.过程如下:

建立C++ DLL的项目要进行字符集设置,使用多字节字符集,如图

关于C#调用C++ 的DLL传送字符串显示乱码的解决第1张

DLL的代码如下:

extern "C"_declspec(dllexport) int Strc(char str[])
{
MessageBox(NULL,str,(LPCSTR)"提示",MB_OK);
return 0;
}

建立C#项目代码如下:

[DllImport("CPPDemo.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
public static extern bool Strc(byte[] sourceStr);

string stringStr = "测试的字符串"; 
bool returnStr = CPPDLL.Strc(Encoding.Default.GetBytes(stringStr));

运行的结果如下图所示:

关于C#调用C++ 的DLL传送字符串显示乱码的解决第2张

免责声明:文章转载自《关于C#调用C++ 的DLL传送字符串显示乱码的解决》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android 4.0新特性:拍照和拍视频可以收到广播了python自动化之UI自动化框架搭建二(关键字驱动)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

079:【Django数据库】QuerySet API详解-filter、exclude、annotate

QuerySet API详解-filter、exclude、annotate: 在使用 QuerySet 进行查找操作的时候,可以提供多种操作。比如过滤完后还要根据某个字段进行排序,那么这一系列的操作我们可以通过一个非常流畅的 链式调用 的方式进行。比如要从文章表中获取标题为 123 ,并且提取后要将结果根据发布的时间进行排序,那么可以使用以下方式来完成:...

将子分支代码merge到主分支master分支

1.首先切换到子分支; git checkout develop2.使用git pull 把分支代码pull下来; git pull3.切换到主分支; git checkout master4.把分支的代码merge到主分支; git merge develop5.git push推上去ok完成,现在 你自己分支的代码就合并到主分支上了。 git push...

Zabbix+Grafana 展示示例1

Zabbix+Grafana 展示示例 Grafana是一个跨平台的开源度量分析和可是化的工具,可以通过该将采集的数据查询然后可视化的展示,并及时通知. 1. Grafana 特性 1. 展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图,折线图,图表等多种展示方式. 2. 数据源: Grap...

CString用法总结

  概述:CString是MFC中提供的用于处理字符串的类,是一种很有用的数据类型。   它很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作时方便了很多。   不管怎样,使用CString有很多的特殊技巧,特别对于纯C背景下走出来的程序员来说有点难以学习。 一、前言   CString位于头文件afx.h中,这篇文章就来讨论这些技巧。   参考...

WPF: x名称空间

这个命名空间存放的就是XAML和XAML编译器沟通的东西,比如编译时与那个C#代码合并等 一、 在XAML中出现的方式有三种 1.标签扩展: x:Array, x:Null, x:Static, x:Type 2. XAML指令元素: x:Code, x:XData 3. Attribute: x:Class, x:ClassModifier, x:Fie...

ARM 汇编的mov操作立即数的疑问

1. 因为对arm汇编有些指令还不能理解,特别是一些相似功能指令间的区别。偶然在网上搜到“faq ARM assembly”,其中描述的几个问题还是值得好好研究一下。 2. 慢慢的发现自己也不再害怕英文的文档了,耐心看至少也能懂个大概。大批经典的文章和书籍都是en文的,所以经常看英文文档是一个非常好的习惯。看看GNU的一些reference manual,...