我正在做一些 C# 代码,它使用 DLLImport 在我的 C++ DLL 中调用一个函数:
[DllImport("my.dll", EntryPoint = "#16", CallingConvention = CallingConvention.StdCall)]
private static extern void sendstring(string s);
我在 C# 中这样称呼它:
sendstring("Test1\\0test2\\0");
我的 C++ DLL 需要创建一个静态 const char XY[] = "Test1\0test2\0"; 从这里开始,因为我需要它来从我的 c++ DLL 中调用另一个 DLLs 函数,如下所示:
functiontootherdll(sizeof(s),(void*)s);
所以我在 C++ 中的代码:
extern "C" {
void MyClass::sendstring( const char *s) {
functiontootherdll(sizeof(s),(void*)s);
}
问题:它正在工作,如果我在我的 C++ DLL 中手动定义这个东西,如下所示:
static const char Teststring[] = "Test1\0test2\0";
functiontootherdll(sizeof(Teststring),(void*)Teststring);
但是从我的 C# 文件中调用它时它没有使用 const char *s(它会报告来自被调用的其他 dll 的不同错误)。我需要知道如何将 const char *s 转换为 static const char s[] 之类的东西。
正如你所意识到的,我对这一切一无所知,所以非常欢迎任何帮助!