gpt4 book ai didi

c# - 需要使用 DllImport 导入的非托管 dll 版本

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:47 24 4
gpt4 key购买 nike

我正在开发一个将非托管 dll 导入 C# 的应用程序。它有一个包装器类,用于加载方法以便调用它。这些方法在 dll 的程序中运行良好。我想添加保存正在使用的 dll 的版本。感谢 C# getting version of unmanaged dll,我发现我需要使用 FileVersionInfo.GetVersionInfo("my.dll") .然而,当运行这个函数时,它异常说它找不到“my.dll”。 dll 位于 c: 根目录下的文件夹中。此文件夹位于 PATH 中并根据 http://msdn.microsoft.com/en-us/library/ms682586(VS.85).aspx#search_order_for_desktop_applications它应该找到它。

知道 my.dll 文件已加载并正常工作,为什么我不能在同一个包装类中调用 GetVersionInfo() 并找到 my.dll 以便我可以获得相同文件的版本号?感谢您的帮助,因为我一直在寻找几天。

最佳答案

它需要完整路径,不会搜索 DLL。这太冒险了,DLL 的 Windows 搜索规则错综复杂且受配置限制。如果您需要在 调用任何函数之前执行此操作,那么最好的方法是调用 SearchPath()。如果您将第一个参数设置为 null,它使用与 LoadLibrary 相同的算法。

如果您需要在 调用函数后执行此操作,那么最好的方法是使用加载的 DLL。迭代 Process.GetCurrentProcess().Modules 以检索 ProcessModule.FileName。

关于c# - 需要使用 DllImport 导入的非托管 dll 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11089236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com