我正在编写一个c#DLL,它将计算并生成: -
-byte array [byte array]
-unit [2 byte error code]
-bool [true/false for success and failure]
此函数将由C ++ / CLI项目调用。一个函数只能返回一个值,但在执行c#函数后我需要这三个值。
C#中的函数原型是什么以及它是如何通过C ++ / CLI代码调用的。
提前致谢
答案 0 :(得分:3)
尝试返回此元素的结构或类。
答案 1 :(得分:1)
也许你可以使用out
修饰符。
void MyMethod(out byte[] ba, out short code, out bool success)
{
...
}
如here所述,电话会是:
array<System::Byte>^ ba;
Int16 code;
bool success;
MyClass::MyMethod(ba, code, success);
我刚试过它。希望它有所帮助。
答案 2 :(得分:0)
正如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.
}
}
}