如何将 C++/CLIint %tmp
转换为本机 C++ int &tmp
?
void test(int %tmp)
{
// here I need int &tmp2 for another pure C++ function call
}
如何将 C++/CLIint %tmp
转换为本机 C++ int &tmp
?
void test(int %tmp)
{
// here I need int &tmp2 for another pure C++ function call
}
现有的答案都不能正确处理输入/输出参数,更不用说任何高级用例了。
other_func
这应该适用于在返回后不保留引用的所有情况:
void test(int %tmp)
{
pin_ptr<int> pinned_tmp = &tmp;
other_func(*pinned_tmp);
}
刚试过这个,工作正常:
//in the C++ dll
void testFunc( int& n )
{
n = 5;
}
//in the CLI app
[DllImport( "my.dll", EntryPoint = "?exported_name_here",
CallingConvention = CallingConvention::StdCall )]
void TestFunc( int& );
void test( int% tmp )
{
int n;
TestFunc( n );
tmp = n;
}
void your_function(int *);
void your_function2(int &);
void test(int %tmp)
{
int tmp2;
your_function(&tmp2);
your_function2(tmp2);
tmp=tmp2;
}