问题标签 [setdlldirectory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - SetDllDirectory 不工作 (DllNotFoundException)
我正在尝试使用相同的 DllImport 调用加载我的 32/64 位本机 dll。
目录结构:
根:
- 应用程序.exe
- /win64/
- stb_image.dll
- /win32/
- stb_image.dll
我尝试使用此解决方案,但您看不到成功。
例如这个函数调用:
但它不起作用,因为我得到一个 DllNotFoundException。
我使用 SetDllDirectory 的方式:
这是我程序中的第一次调用,所以它应该设置正确的路径。它也返回真。
但是,如果我将(在我的情况下)64 位本机 dll 放在 exe 的目录中,那么即使我将 DllDirectory 设置为不同的路径,它也可以工作。
有什么帮助吗?
windows - SetDllDirectory 没有级联,因此无法加载依赖 DLL
我从一个目录执行一个 exe,比如说,“C:/test”
DLL 位于目录“C:/test/dlls”中,所以,在这个 exe 中,我调用:
然后我打电话
和
lib1.dll
需要目录“C:/test/dlls”中的其他 DLL,但是当我执行pr(...)
got from时GetProcAddress
,出现错误:
“程序无法启动,因为您的计算机中缺少 lib2.dll。请尝试重新安装程序以解决此问题。”
如果我移动lib2.dll
到“C:/test”,就会找到它。这意味着这SetDllDirectory()
仅对加载第一个 DLL 有效。
有谁知道为什么以及如何解决它?
c# - 如何在 [DllImport] 之前调用 SetDllDirectory()?
我正在构建一个需要从 C++ dll 调用函数的 .Net C# 库项目。C++ dll 位于我项目的“lib”文件夹中。所以我使用[DllImport]。我需要将 lib 文件夹中 C++ dll 的路径传递给 DllImport。
我不希望它成为硬编码的完整路径。据我所知,我可以调用 SetDllDirectory("lib") 来添加我的 lib 文件夹进行搜索。但是,如果我没记错的话,应该在 [DllImport] 之前调用 SetDllDirectory()。我可以从哪里打电话?如果我从静态构造函数中执行此操作,则为时已晚。
c# - 如何将依赖项从库项目复制到主项目?
我有一个引用托管 dll(用 C# 编写的库)的 Asp.Net 项目(Vb.Net)。该库项目在 lib 文件夹中有几个非托管依赖项 dll(在构建期间复制到 bin/Release/lib 文件夹中)。该库不是主要解决方案的一部分。
我的库使用引用非托管 dll 的 [DllImport]。但是为了让非托管 dll 被找到,我调用了 SetDllDirectory():
我正在努力生成非托管 dll 及其依赖项的路径。我可以从我的主要项目 bin 文件夹或其他东西开始。但是接下来我该怎么办?例如,有没有办法将非托管 dll 从库的 bin/Release/lib 文件夹复制到我的主项目的 bin 文件夹?还是其他解决方案?