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

时间:2012-03-03 21:30:04

标签: c# c++ function dll import

我有一个带有一组函数的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,它只会返回一个说明没有入口点的异常。

我究竟做错了什么?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

作为指定EntryPoint作为rfmodulator建议的替代方法,您可以在C ++源代码中使用extern "C",这将使导出的函数名称与C ++源代码中的名称相同。

C ++编译器通常会破坏函数的名称,因此您可以使用重载函数(具有相同名称的函数使用不同的参数)。