4

如何将 C++/CLIint %tmp转换为本机 C++ int &tmp

void test(int %tmp)
{
    // here I need int &tmp2 for another pure C++ function call
}
4

3 回答 3

3

现有的答案都不能正确处理输入/输出参数,更不用说任何高级用例了。

other_func这应该适用于在返回后不保留引用的所有情况:

void test(int %tmp)
{
    pin_ptr<int> pinned_tmp = &tmp;
    other_func(*pinned_tmp);
}
于 2011-06-07T12:53:38.200 回答
1

刚试过这个,工作正常:

  //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;
}
于 2011-06-06T09:30:58.023 回答
0
void your_function(int *);
void your_function2(int &);

void test(int %tmp)
{
    int tmp2;
    your_function(&tmp2);
    your_function2(tmp2);
    tmp=tmp2;
}
于 2011-06-06T09:15:48.280 回答