2

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

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

不幸[DllImport]的是,它是一个属性,需要一个常量表达式。是否有任何其他选项可以解决此错误?

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

4

2 回答 2

3

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

于 2012-04-28T21:23:50.080 回答
1

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

一些带有解释、示例和源代码的相关链接:

于 2012-04-28T21:26:22.493 回答