P /使用运行时文件名调用本机DLL

时间:2012-04-28 21:22:10

标签: c# pinvoke dllimport

出于版本控制的原因,能够在原生C ++ dll上使用p / invoke是有益的,其文件名将在运行时确定,如下所示:

[DllImport(myDllFilename)]
private static extern void MyInvokedMethod();

不幸的是[DllImport]是一个属性,需要一个常量表达式。还有其他方法可以解决此错误吗?

我知道我可以在不同的文件夹中使用具有相同名称的文件,并在运行时加载正确的文件,但是能够使用不同命名的文件对我的情况来说是理想的。

2 个答案:

答案 0 :(得分:3)

没有解决方法。您将需要使用LoadLibrary和GetProcAddress。这真的没什么好玩的,所以如果可行,我会尽量避免这样做。

答案 1 :(得分:1)

要实现您想要的功能,您需要PInvoke几件事(LoadLibraryGetProcAddress - 请参阅下面的链接)...它被称为“后期绑定本机代码”...使用此不是容易/推荐,但有可能......

一些相关链接,包括解释,示例和源代码: