![]() |
1
2
这有点黑客行为,但是既然你说你可以在运行时找到dll的路径,为什么不在使用任何函数之前把它复制到你当前的工作目录中呢?这样,该dll将存在于您的exe旁边,并由LoadLibrary找到。您的dllimport中不需要任何其他路径。
使用动态路径中的方法的唯一其他方法是:
当然,您需要为每个要“导入”的函数声明一个委托,因为您必须将指针强制转换为委托。 |
![]() |
2
2
不要使用任何路径。当试图动态或静态加载函数时,Windows使用默认的方法来搜索DLL。 精确的搜索逻辑在msdn文档中记录 LoadLibrary -基本上,如果应用程序刚刚使用了DLL,请在安装期间将其放在与应用程序相同的文件夹中,不要担心。如果它是一个常用的dll,把它放在loadLibrary()搜索的文件夹结构中,它就会被找到。 |
![]() |
3
0
我也有类似的情况。我使用安装在计算机上的SDK中的DLL。我从该sdks注册表项获取DLL的目录位置。我在执行用户路径变量上设置了dll位置(仅临时修改)。基本上,它允许您为要调用的dll设置一个动态路径,因此它不必来自注册表。请注意,path var是Windows查找DLL的最后一个位置。但另一方面,它不会改变Windows查找DLL的其他位置。 例子: 我要调用的API,在dll上:
获取注册表项(您需要 使用Microsoft.win32; ):
在path var上添加dll的路径(concat()在linq中找到):
开始使用API调用:
|
|
Park · 为什么两个不同实例的isa指针相同? 7 年前 |
![]() |
Matthias · 转到运行时日志详细信息更改 7 年前 |
![]() |
belnxkkk · spring在运行时添加数据源 7 年前 |
![]() |
Homunculus · 在大型数据帧中查找哪一天是假日-巨大的运行时 7 年前 |
![]() |
Jack Armstrong · 优化PowerPoint的VBA宏 7 年前 |
![]() |
Farzin · 从当前命名空间获取用户定义控件的列表 7 年前 |
![]() |
Mary · Java execute命令在代码中不起作用 7 年前 |