启用调用非托管方法 - "Unable to find an entry point named 'XXX' in DLL 'XXX.dll'."

Enable to call unmanaged method - "Unable to find an entry point named 'XXX' in DLL 'XXX.dll'."

我试图在 C# 控制台应用程序项目中使用用 C 编写的 dll 中的方法。 这是我得到的 h 文件中的方法签名:

DLL_PUBLIC sint AshrAPI_TranRecToRefunISO(char* TranRec , byte* RefunISO , usint* ISOLength);

我用P/Invoker在C#中创建了相应的方法:

[DllImport(@"Ashrait.dll", CallingConvention = CallingConvention.Cdecl, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.I2)]
        internal static extern short AshrAPI_TranRecToRefunISO([MarshalAs(UnmanagedType.LPStr)] string TranRec, [MarshalAs(UnmanagedType.LPArray)] byte[] RefunISO, ushort ISOLength);

但无论我尝试使用哪种 UnmanagedType,我总是得到相同的异常: 无法在 DLL 'XXX.dll

中找到名为 'XXX' 的入口点

谁能看出哪里不对?

找到问题了!因为我将 dll 作为项目加载到项目而不是作为参考,所以我将它放在项目内的资源文件夹中。 一旦我将 dll 移动到根项目文件夹,一切都开始工作:)