如何从c#dll返回字节数组、uint值、c++/cli调用的dll
本文关键字:c++ cli 调用 dll uint c#dll 返回 字节 数组 字节数 | 更新日期: 2023-09-27 18:26:12
我正在编写一个c#DLL,它将计算并生成:-
-byte array [byte array]
-unit [2 byte error code]
-bool [true/false for success and failure]
此函数将由C++/CLI项目调用。一个函数只能返回一个值,但在c#函数执行后,我需要这三个值。
C#中的函数原型是什么,以及C++/CLI代码如何调用它。
提前感谢
尝试返回此元素的结构或类。
也许您可以使用out
修饰符。
void MyMethod(out byte[] ba, out short code, out bool success)
{
...
}
正如这里所说,呼叫将是:
array<System::Byte>^ ba;
Int16 code;
bool success;
MyClass::MyMethod(ba, code, success);
我刚刚测试了一下。希望它能帮上忙。
正如Hans Passant在评论中所说,错误应该是异常,而不是返回值的一部分。如果你在语法上有问题,我会这样做:
在C#中:
public class CSharpClass
{
public static byte[] Foo()
{
// ...
if (some error condition)
{
throw new SomeException(...);
// If you really want, write your own exception class
// and have the error code be a property there.
}
byte[] result = new byte[1024];
return result;
}
}
在C++/CLI:中
public ref class CppCLIClass
{
public:
static void Bar()
{
try
{
array<Byte>^ fooResult = CSharpClass::Foo();
// Success, no error occurred.
}
catch (SomeException^ e)
{
// An error occurred.
}
}
}