尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
时间:2011-12-27
来源:互联网
使用C#调用C++写的DLL文件时出错
DLL中的函数(实现Unicode转换为Ansi的操作)为:
extern "C" __declspec(dllexport) char* UnicodeToAnsi()
{
wchar_t *wszString = L"abcd1234你我他";
int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
char *szAnsi = new char[ansiLen + 1];
::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);
szAnsi[ansiLen] = '\0';
return szAnsi;
}
C#调用的函数为:
string str = Cppdll.UnicodeToAnsi();---->就在这里出错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
C#类
public class Cppdll
{
[DllImport("CharConvertDll.dll",CharSet = CharSet.Unicode)]
public static extern string UnicodeToAnsi();
}
DLL中的函数(实现Unicode转换为Ansi的操作)为:
extern "C" __declspec(dllexport) char* UnicodeToAnsi()
{
wchar_t *wszString = L"abcd1234你我他";
int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
char *szAnsi = new char[ansiLen + 1];
::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);
szAnsi[ansiLen] = '\0';
return szAnsi;
}
C#调用的函数为:
string str = Cppdll.UnicodeToAnsi();---->就在这里出错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
C#类
public class Cppdll
{
[DllImport("CharConvertDll.dll",CharSet = CharSet.Unicode)]
public static extern string UnicodeToAnsi();
}
作者: tcwushaofei 发布时间: 2011-12-27
怎么没人相应呀! 高手们哪里去了呀!!
作者: tcwushaofei 发布时间: 2011-12-28
兄弟,我也遇到类似的问题,我是C++菜鸟,C++到C#参数已转化我就晕了,有高手能帮忙吗。
哎,帮忙顶一下
顺便连接一下我的帖子:
http://topic.csdn.net/u/20111228/10/cde7eef9-3cc0-4709-a399-11717058fc6c.html?61084
哎,帮忙顶一下
顺便连接一下我的帖子:
http://topic.csdn.net/u/20111228/10/cde7eef9-3cc0-4709-a399-11717058fc6c.html?61084
作者: jian200801 发布时间: 2011-12-28
UnicodeToAnsi
相当于:
C# code
相当于:
C# code
string str = L"abcd1234你我他"; byte[] bytes = Encoding.Default.GetBytes(str);
作者: gomoku 发布时间: 2011-12-28
把字符集改改:
C# code
C# code
[DllImport("CharConvertDll.dll",CharSet = CharSet.Ansi)] public static extern string UnicodeToAnsi();
作者: sdl2005lyx 发布时间: 2011-12-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28