在编译时未知名称时,在C#中导入非托管DLL

时间:2016-09-29 17:07:57

标签: c# dll

我希望这是一个简单的问题,但我无法在我的搜索中找到解决方案。我有一个C#应用程序,需要从几个DLL加载数据。每个DLL都保证具有相同的函数foo()。但我希望这些DLL在运行时即插即用。我通常处理DLL(我知道名称)的方式是使用:

[DllImport("my_dll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int foo();

如何使用动态字符串替换文件名(例如“my_dll_3934.dll”)?此外,可能有多个必须加载的dll与相同的签名匹配(例如,“my_dll_3934.dll”和“my_dll_3935.dll”)。

将使用的DLL是由我生成的,但我希望最终用户只需删除DLL,因为更新/新dll可用而无需更新应用程序。我将进行适当的错误检查和异常处理。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我的问题的答案可以在这里找到:

How can I specify a [DllImport] path at runtime?

在用户Ran的评论中。感谢Hackerman指出我正确的解决方案。