C#传递字符串给C++不能用ref限定

简介:

场景

//DLL中申明 
extern “C” __declspec(dllexport) int WINAPI Test(char astr2,char bstr2) 

//改变astr2 bstr 2 ,astr1 bstr1不会被改变
return a+b; 
}

DLL 需传入char *类型 
[DllImport(“MyDLL.dll")] 
//传入值 
public static extern int mySum (ref string astr1, ref string bstr1);

说明
C#调用的时候,指定了ref,导致传递的字符串在C++中提示字符串无效

解决
去掉ref

资料
ref 关键字通过引用(而非值)传递参数。 通过引用传递的效果是,
对所调用方法中的参数进行的任何更改都反映在调用方法中。 例如,如果调用方传递本地变量表达式或数组元素访问表达式,
所调用方法会将对象替换为 ref 参数引用的对象,然后调用方的本地变量或数组元素将开始引用新对象。
传递到 ref 形参的实参必须先经过初始化,然后才能传递。
通过上述资料,还是没有理解



     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/2047934,如需转载请自行联系原作者


相关文章
|
4天前
|
C#
C#的小例子和字符串(一)
C#的小例子和字符串(一)
117 0
|
4天前
|
存储 算法 编译器
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
55 1
|
4天前
|
C#
C#有关字符串的分割,替换,截取
C#有关字符串的分割,替换,截取
|
4天前
|
存储 C++ 索引
C++ 字符串完全指南:学习基础知识到掌握高级应用技巧
C++的字符串使用`string`类处理,如`string greeting = "Hello"`。字符串连接可通过`+`或`append()`函数实现。访问字符使用索引,如`myString[0]`。`length()`或`size()`可获取长度。`getline()`用于读取整行输入。注意转义字符如`\\"`用于在字符串中嵌入双引号。使用`cin`读取字符串时,空格会终止输入,而`getline()`能读取整行。
27 0
|
4天前
|
开发框架 .NET C#
浅谈c和c++和c#之间的关系
浅谈c和c++和c#之间的关系
11 0
|
4天前
|
编解码 JavaScript 前端开发
【专栏】介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例
【4月更文挑战第29天】本文介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例。Base64编码将24位二进制数据转换为32位可打印字符,用“=”作填充。文中展示了各语言的编码解码代码,帮助开发者理解并应用于实际项目。
|
4天前
|
存储 编译器 C语言
C++字符串大小写之for语句
C++字符串大小写之for语句
18 0
|
4天前
|
C++
【代码片段】【C++】获取当前时间戳并生成固定格式字符串
【代码片段】【C++】获取当前时间戳并生成固定格式字符串
15 0
|
4天前
|
C#
C#字符串
C#字符串
16 0
|
4天前
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”