在C++.NET中如何定义具有输出参数的函数

飞花丝雨 2009-10-15 10:15:10
本人需要将标准C++程序封装成.net程序给C#调用,某个类成员函数有几个输出参数(C++引用),如果直接使用.net引用^, 不能将参数带出去(在C#中是普通参数,不是ref或out),在C++封装时应该如何指定呢?
...全文
320 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞花丝雨 2009-10-15
  • 打赏
  • 举报
回复
用%指定一个引用参数,对应C#中的ref,即输入输出参数。
加上[out]限定,变为仅输出的参数,即C#中的out
[Runtime::InteropServices::Out]可以简写为[out],默认为[in, out]
飞花丝雨 2009-10-15
  • 打赏
  • 举报
回复
已解决,供大家参考,详见MSDN(VS2008)


此示例演示如何将函数参数指定为 out 参数,以及如何从 C# 程序中调用该函数。

在 Visual C++ 中使用 OutAttribute 指定输出参数。


此示例的第一部分是一个 Visual C++ DLL,其类型包含一个具有输出参数的函数。
// cpp_out_param.cpp
// compile with: /LD /clr:safe
using namespace System;
public value struct TestStruct {
static void Test([Runtime::InteropServices::Out] String^ %s) {
s = "a string";
}
};

这是一个 C# 客户端,它将使用前面示例中创建的 Visual C++ 组件。
// cpp_out_param_2.cs
// compile with: /reference:cpp_out_param.dll
using System;
class TestClass {
public static void Main() {
String t;
TestStruct.Test(out t);
System.Console.WriteLine(t);
}
}

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧