以从任何位置加载 DLL,然后 DllImport LoadLibrary() 将使用该 DLL。
由于这种行为,我们可以提前调用 LoadLibrary(),从而将您的调用指向其他 DLL。如果您在编写库,可以通过调用 GetModuleHandle() 来防止出现这种情况,以确保在首次调用 P/Invoke 之前没有加载该库。
P/Invoke 疑难解答
如果您的 P/Invoke 调用失败,通常是因为某些类型的定义不正确。以下是几个常见问题:
1.long != long。在 C++ 中,long 是 4 字节的整数,但在 C# 中,它是 8 字节的整数。
2.字符串类型设置不正确。