草庐IT

LoadLibrary

全部标签

c - LoadLibrary() 一个 EXE?

我有一个可执行文件(我使用VisualC++10创建的),我需要使用我编写的另一个程序(相同环境)中的功能。由于复杂的部署要求,我不会深入探讨,因此我无法根据所需功能构建DLL并将其加载到两个程序中。所以我想我可以__declspec(dllexport)EXE中的一些函数,然后LoadLibrary()会让我GetProcAddress()他们。显然这是不可能的,但当我开始研究它时-它看起来是可行的。具体来说,当您在EXE项目中执行__declspec(dllexport)函数时,VisualC++还会生成一个用于动态链接的lib文件-因此您甚至不需要使用LoadLibrary()-

c - 当依赖 DLL 丢失时,尝试使用 LoadLibrary 在 Windows 上加载 DLL

我有一个应用程序在Windows上使用LoadLibrary来动态加载插件。然而,一些插件有其他依赖的DLL,例如数据库客户端DLL。当您尝试加载此类DLL并且其中一个依赖的DLL不存在时,您会看到一个讨厌的Windows对话框:“该程序无法启动,因为您的计算机缺少xxx.ddl。请尝试重新安装该程序以解决此问题。”有什么简单的方法可以避免这个对话框吗?我希望有人可以使用LoadLibraryEx并传递一个标志,上面写着“不要给我那个烦人的对话框”,但它看起来不像。我希望应用程序处理该错误,而不是Windows为我处理它,尤其是当消息文本不正确时(问题不是程序无法启动,程序运行得很愉快

java - 如何通过 Java 代码影响 System.loadLibrary() 的搜索路径?

在Java项目中,我正在使用第三方库,它通过以下方式加载一些native库System.loadLibrary("libName");我希望能够从我的应用程序中影响此方法的搜索路径,以便用户不需要在命令行上指定正确的java.library.path值(此值取决于当前的操作系统和架构)。例如,在Windows上我想将它设置为“lib/native/windows”,在Linux32位上设置为“lib/native/linux32”等。我试过了System.setProperty("java.library.path",...)但这被忽略了,显然是因为JVM在我的代码运行之前只读取了一次

android - System.loadLibrary(...) 在我的情况下找不到 native 库

我想使用来自另一个Android项目的现有原生库,所以我只是将NDK构建的库(libcalculate.so)复制到我的新Android项目中。在我的新Android项目中,我创建了一个文件夹libs/armeabi/并将libcalculate.so放在那里。没有没有jni/文件夹。我的测试设备采用ARM架构。在我的java代码中,我通过以下方式加载库:static{System.loadLibrary("calculate");}当我运行我的新android项目时,出现错误:java.lang.UnsatisfiedLinkError:...nativeLibraryDirecto

android - System.loadLibrary(...) 在我的情况下找不到 native 库

我想使用来自另一个Android项目的现有原生库,所以我只是将NDK构建的库(libcalculate.so)复制到我的新Android项目中。在我的新Android项目中,我创建了一个文件夹libs/armeabi/并将libcalculate.so放在那里。没有没有jni/文件夹。我的测试设备采用ARM架构。在我的java代码中,我通过以下方式加载库:static{System.loadLibrary("calculate");}当我运行我的新android项目时,出现错误:java.lang.UnsatisfiedLinkError:...nativeLibraryDirecto

关于C#:获取LoadLibrary无法加载DLL的原因

GetreasonthatLoadLibrarycannotloadDLL在Linux和Mac上,当使用dlopen()加载链接到另一个库的共享库时,如果由于缺少符号而链接失败,您可以使用dlerror()获取缺少符号的名称。它说类似dlopenfailed:cannotlocatesymbol"foo"在Windows上,当使用LoadLibrary()加载缺少符号的DLL时,您只能从GetLastError()获取错误代码,对于此类问题,该错误代码始终为127。我如何确定哪个符号是缺少,或者来自LoadLibrary()的更详细的错误消息解释了函数失败的原因?简短的回答-你不能,因为Win

关于C#:获取LoadLibrary无法加载DLL的原因

GetreasonthatLoadLibrarycannotloadDLL在Linux和Mac上,当使用dlopen()加载链接到另一个库的共享库时,如果由于缺少符号而链接失败,您可以使用dlerror()获取缺少符号的名称。它说类似dlopenfailed:cannotlocatesymbol"foo"在Windows上,当使用LoadLibrary()加载缺少符号的DLL时,您只能从GetLastError()获取错误代码,对于此类问题,该错误代码始终为127。我如何确定哪个符号是缺少,或者来自LoadLibrary()的更详细的错误消息解释了函数失败的原因?简短的回答-你不能,因为Win