天道酬勤,学无止境

loadlibrary

LoadLibraryEx 忽略并排清单(LoadLibraryEx ignores side-by-side manifest)

问题 LoadLibraryEx函数是否使用并排清单? 我有带有嵌入式 SxS 清单的 bar.dll,并且该清单描述了此 bar.dll 的版本,其他 dll 文件 foo.dll 具有将 bar.dll 列为依赖项的清单,并具有指定的版本。 但是,当我尝试使用LoadLibraryEx("bar.dll", NULL, 0)从 foo.dll 加载 bar.dll 时LoadLibraryEx("bar.dll", NULL, 0)我看到(启用了带有 gflags 的 sls)它忽略了这些清单,并加载了 bar.dll 的第一个版本它在搜索路径中看到,如果我定义ISOLATION_AWARE_ENABLED并使用LoadLibrary它会找到正确的版本,但是此ISOLATION_AWARE_ENABLED不会影响LoadLibraryEx行为,我需要使用LoadLibraryEx加载正确的版本,因为LoadLibraryEx隐式用于延迟加载 dll。 LoadLibraryEx应该像这样工作,还是我的项目配置中有问题? 富dll <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1

2022-01-15 05:24:01    分类:技术分享    c++   winapi   loadlibrary   side-by-side   activation-context-api

加载 dll 库文件时出现问题... java.lang.UnsatisfiedLinkError: Can't load library(Issue while loading a dll library file... java.lang.UnsatisfiedLinkError: Can't load library)

问题 加载 dll 文件时,出现以下异常: Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\Transliteration\rlpnc-3.1.0-sdk-ia32-w32-msvc80\rlp\bin\ia32-w32-msvc80\btrntjni.dll: The system cannot find message text for message number 0x%1 in the message file for %2 at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.load0(Unknown Source) at java.lang.System.load(Unknown Source) at com.basistech.util.internal.Native.loadLibrary(Unknown Source) at com.basistech.rnt.jni

2022-01-12 14:58:38    分类:技术分享    java   dll   jakarta-ee   classloader   loadlibrary

LoadLibraryEx ignores side-by-side manifest

Does LoadLibraryEx function use side-by-side manifests? I have bar.dll with embedded SxS manifest, and that manifest describes version of this bar.dll, other dll file foo.dll has manifest that lists bar.dll as dependency, with specified version. But when I try to load bar.dll from foo.dll with LoadLibraryEx("bar.dll", NULL, 0) I see (with enabled sls with gflags) that it ignores these manifests, and loads first version of bar.dll that it sees in searchpath, if I define ISOLATION_AWARE_ENABLED and use LoadLibrary it finds right version, but this ISOLATION_AWARE_ENABLED doesn't affect behaviour

2022-01-09 04:39:08    分类:问答    c++   winapi   loadlibrary   side-by-side   activation-context-api

Issue while loading a dll library file... java.lang.UnsatisfiedLinkError: Can't load library

While loading a dll file, I am getting the following exception: Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\Transliteration\rlpnc-3.1.0-sdk-ia32-w32-msvc80\rlp\bin\ia32-w32-msvc80\btrntjni.dll: The system cannot find message text for message number 0x%1 in the message file for %2 at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.load0(Unknown Source) at java.lang.System.load(Unknown Source) at com.basistech.util.internal.Native.loadLibrary

2022-01-08 08:25:03    分类:问答    java   dll   jakarta-ee   classloader   loadlibrary

Delphi中加载同一个DLL的两个实例(Load two instances of the same DLL in Delphi)

问题 这是我的问题:我想为同一个 DLL 创建两个单独的实例。 以下不起作用,因为 Handle1 和 Handle2 将获得相同的地址 Handle1 := LoadLibrary('mydll.dll'); Handle2 := LoadLibrary('mydll.dll'); 以下有效,但我必须复制 DLL 并将其重命名为其他名称(这似乎有点傻) Handle1 := LoadLibrary('mydll.dll'); Handle2 := LoadLibrary('mydll2.dll'); 有没有办法只拥有一个 DLL 文件,但加载它的多个实例? 回答1 我不认为那是可能的。 您必须编写一个加载 dll 的 .exe。 然后你可以跨越多个进程(.exe),每个进程都将运行自己的 dll 实例。 您必须使用 IPC(进程间通信)技术与 .exe 进行通信。 当然可行,但并非完全没有道理。 回答2 它不适用于 LoadLibrary,因为 Windows 会检查 dll 是否已经加载,并且会一次又一次地返回相同的句柄。 我有一些代码最初是为了从绑定到可执行文件的资源加载 dll,但我想也可以对填充了文件内容的内存区域执行相同的操作。 我看不出它为什么不能工作两次的任何原因,但我还没有对其进行测试。 你可以在这里找到它:http://svn.berlios.de/viewvc

2021-12-21 05:58:08    分类:技术分享    delphi   dll   loadlibrary

Load two instances of the same DLL in Delphi

Here's my problem: I would like to create two separate instances of the same DLL. The following doesn't work because Handle1 and Handle2 will get the same address Handle1 := LoadLibrary('mydll.dll'); Handle2 := LoadLibrary('mydll.dll'); The following works, but I have to make a copy of the DLL and rename it to something else (which seems a bit silly) Handle1 := LoadLibrary('mydll.dll'); Handle2 := LoadLibrary('mydll2.dll'); Is there a way to have only one DLL file, but load several instances of it?

2021-12-13 06:03:55    分类:问答    delphi   dll   loadlibrary

加载 Android .so 有时会失败(很少)(Loading Android .so sometimes fails (rarely))

问题 我们的 Android 应用程序有一个奇怪的问题。 在 Fabric 中,我们很少发生崩溃。 这是一个标准的 UnsatisfiedLinkError 意味着在 Java 类的静态初始化器中,.so 库加载失败。 这是我们迄今为止发现的: 这个问题非常罕见。 它发生在成百上千或安装中的几百个设备中。 一旦发生,似乎重新启动甚至重新安装都无法解决它。 它发生在索尼、三星、华为等各种品牌中。 它发生在从 2.3 到 5.x 的所有 Android 版本中。 我们设法在办公室的 Nexus 1 设备上捕捉到了它。 当它开始发生时,它总是在 LoadLibrary 调用中失败,即使同一个 apk 在其他设备上运行得很好。 出现问题时,我把armv7a和x86版本的lib都去掉了,只留下armeabi一个,排除了加载错误的lib,还是失败。 通过 Android Studio 重新运行应用程序多次添加日志仍然在同一位置导致失败。 然后突然间,在没有明显变化的情况下,它开始在 Nexus 1 中工作,即使经过数十次重试,我们也无法再次重现该问题。 在它开始工作之前发生的唯一一件事是,我尝试使用 adb install 手动安装损坏的 apk,但失败了,下次我通过 Android Studio 加载该应用程序时,它可以正常工作并且从那以后一直有效。 我不确定损坏的 apk

2021-12-12 09:27:15    分类:技术分享    android   android-ndk   loadlibrary

Python Ctypes 加载库(Python Ctypes Load Library)

问题 我正在使用 Windows 7 64 位机器。 我安装了 Visual Studio 2010 并开发了一个简单的 win32 dll 来添加 2 个数字.. dll 已创建,我使用测试应用程序来测试 dll,它工作正常.. 现在我编写 python 脚本(如下所示)来使用这个库。 但我收到以下错误消息。 Traceback (most recent call last): File "C:\Users\sbritto\Documents\Visual Studio 2008\Projects\MathFuncsDll\Debug\MathFuncs.py", line 5, in <module> lib = ctypes.WinDLL('MathFuncsDll.dll',use_last_error=True) File "C:\Python27\lib\ctypes\__init__.py", line 365, in __init__ self._handle = _dlopen(self._name, mode) WindowsError: [Error 193] %1 is not a valid Win32 application Python脚本 import ctypes from ctypes import * #lib = cdll

2021-12-09 15:56:07    分类:技术分享    visual-studio-2010   dll   python-2.7   ctypes   loadlibrary

加载库错误 Matlab(Load Library error Matlab)

问题 我打算与 OpenCV 1.1 版本和 Matlab2011 一起工作。 该程序使用调用加载库。 但是,它返回一个错误 > In loadlibrary at 347 In Untitled at 4 Error using loadlibrary (line 421) There was an error loading the library "C:\Program Files (x86)\OpenCV1.1\bin\cxcore110.dll" C:\Program Files (x86)\OpenCV1.1\bin\cxcore110.dll is not a valid Win32 application. 我已经在 Matlab 2008 和 2010 中测试了该程序,它给出了不同类型的错误我已经安装了 x64 编译器和工具,我的系统有带有 SDK7 和 6.1 的 Visual Studio2008 和 2010。 此外,在进行 MEX 设置时,我得到以下选项 Select a compiler: [1] Microsoft Software Development Kit (SDK) 7.1 in c:\Program Files (x86)\Microsoft Visual Studio 10.0 [2] Microsoft Visual C++ 2010

2021-12-08 15:47:51    分类:技术分享    matlab   opencv   32bit-64bit   loadlibrary

来自托管代码的 Hook LoadLibrary 调用(Hook LoadLibrary call from managed code)

问题 我们希望调用 LoadLibrary 以下载未找到的程序集。 我们有一个处理托管程序集的 ResolveAssembly 处理程序,但我们也需要处理非托管程序集。 我们已经尝试通过“Microsoft Windows 编程应用程序”中指定的技术重写导入表来挂钩 LoadLibrary 调用,但是当我们调用 WriteProcessMemory() 时,我们得到一个权限被拒绝错误 (998)。 (是的,我们正在以更高的权限运行) 有没有人在加载 CLR 时成功地重写了导入表? 任何人都可以指出我正确的方向吗? 更新:我们解决了权限被拒绝的问题,但是现在当我们迭代混合程序集(托管 + 非托管)的导入表时,我们找到的唯一条目是 mscoree.dll。 有谁知道如何找到本地进口? (我们在 C++/CLI 中工作)。 回答1 我已成功从托管代码中挂钩。 但是,我通过将一个非托管 DLL 注入远程进程并让它重写 DllMain 中的导入表来做到这一点。 您可能需要考虑这种方法。 这是我的挂钩功能: //structure of a function to hook struct HookedFunction { public: LPTSTR moduleName; LPTSTR functionName; LPVOID newfunc; LPVOID* oldfunc; }

2021-12-07 16:37:14    分类:技术分享    .net   c++   loadlibrary