我正在尝试围绕 C.dll(pbmman32.dll,如果有人熟悉它)编写一个包装函数以与 c# 一起使用。
查看源代码的头文件,尽管它们确实使用了 extern "C"{}
,但它们似乎并未实现 __declspec(dllexport)
。我仍然可以在缺少 dllexport 行的情况下调用该 dll 中的函数吗?
例如:
BOOL PBM_Version (TCHAR* Buffer, WORD* Version, DWORD Size)
进入:
[DllImport("pbmman32.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
public static extern bool PBM_Version(StringBuilder Buffer, StringBuilder Version, System.UInt32 Size);
最佳答案
__declspec(dllexport)
是将函数标记为可导出的便捷方法,但这不是唯一的方法(例如,它们可能已使用 .def 文件导出。
您应该能够查询 DLL 以获取所有导出的函数(您可以使用类似 http://www.dependencywalker.com/ 的东西)。如果您要调用的电话已导出,那么您就可以开始了。
关于c# - 源 C dll 中是否需要 dllexport 才能通过 [DllImport] 在 C# 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30880042/