无法从 C# 调用C++函数

can't call C++ function from C#

本文关键字:C++ 函数 调用      更新时间:2023-10-16

我有一个带有一组函数的DLL。DLL与"themidia"一起使用以确保其安全。

当我尝试调用函数时,C#会抛出由于函数名称而导致的错误。

[DllImport("safety.dll", CallingConvention=CallingConvention.StdCall, ExactSpelling=true)]
private static extern IntPtr _encryptLogin@8(string string_0, string string_1);

如果我删除@8并删除ExactSpelling=true,它只返回一个异常,表示没有入口点。

我到底做错了什么?

删除"@",并在属性中添加EntryPoint="_encryptLogin@8"

除了将EntryPoint指定为rfmodulator之外,您还可以在C++源中使用extern "C",这将使导出的函数名称与它们在C++源代码中的名称相同。

C++编译器通常会破坏函数的名称,这样你就可以拥有重载的函数(具有相同名称但不同参数的函数)。