我正在将本机C ++ DLL编组为C#DLL。我在C / C ++中并不是很认可,但是我设法让它工作直到我遇到这个问题。这是一个非常简单的代码示例:
C ++
GET
C#
PROASADLL __declspec(dllexport) void outTest(int* number){
int temp = *number + 10;
number = &temp; //*number = 12
}
请注意我是我的真实场景,我正在尝试使用指针指向struct的指针,但我决定将其删除,因为它不是编组问题;即使这个简单的代码也行不通。 C ++代码可以工作,但我不排除在那里愚蠢和有问题:就像我说的,我不太了解C / C ++。
C#包装器方法中的数字变量值不会改变。请帮忙。
答案 0 :(得分:2)
我认为你的结果很糟糕,因为在你的C ++代码中,你实际上是通过将参数设置为另一个指针来更改参数number
。
我相信您的更改只会在您的outTest
范围内显示。
但是,如果你更改指针...指向的值......那应该是一个不同的故事。非常喜欢这样:
*number = *number + 10;
编辑:此位未经过测试。哦......而且......我还没有用C ++写任何东西。可能也完全错了。