我想在Linux上的C ++(.so)和C#之间来回传递字符串。但是,我真的找不到在Linux上使用PInvoke的示例(PInvoke的大多数搜索结果在Windows上)。因此,在Linux上执行此操作的最佳方法是什么?
我已经尝试过普通的char *解决方案,但是它不起作用。我也不知道这种方法是否安全,因为它在非托管代码和托管代码之间进行编组。
C ++
//NativeSO
extern "C" const char* IO_String(const char *message)
{
// I know it is "const char*", but I just want
// to express what I want to achieve with this function
message = "I changed a C# string";
return message;
}
C#
[DllImport("NativeSO")] //let's assume the file name & path are correct
static extern string IO_String(string message);
...
public void test()
{
string target = IO_String("hi");
bool isTrue = (target == "I changed a C# string");
print(isTrue); //expect to be true
}
我期望print(isTrue)在C#中是正确的,但是它不起作用。上面的代码的主要目的是演示我正在尝试实现的目标。