loadlibrary-linux

将 Windows 动态链接库移植到 Linux
授权协议 GPL-2.0
开发语言 C/C++
所属分类 程序开发、 其他开发相关
软件类型 开源软件
地区 不详
投 递 者 詹夕
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

loadlibrary 库允许原生 Linux 程序从 Windows DLL 加载和调用函数。

库中包含一个自 ndiswrapper 派生的自定义 PE/COFF 加载器。该库将处理重定位和导入,并提供类 dlopen API。

目的是允许在 Linux 上对自包含的 Windows 库进行可扩展和有效的模糊测试,包括视频编解码器、解压缩库、病毒扫描程序与图像解码器等。可以进行:

  • C++ 异常调度和释放。
  • 从 IDA 加载其它字符。
  • 使用 gdb、断点、堆栈跟踪等进行调试
  • 运行时 hook 和补丁。
  • 支持 ASAN 和 Valgrind 以检测细微的内存损坏错误。
  • System.load 和 System.loadLibrary详解 1.它们都可以用来装载库文件,不论是JNI库文件还是非JNI库文件。在任何本地方法被调用之前必须先用这个两个方法之一把相应的JNI库文件装载。 2.System.load 参数为库文件的绝对路径,可以是任意路径。 例如你可以这样载入一个windows平台下JNI库文件: System.load("C://Documents an

  • 含义 将指定的模块加载到调用进程的地址空间中。指定的模块可能会导致其他模块被加载。对于其他加载选项,请使用 LoadLibraryEx函数。 使用语法 C ++ HMODULE WINAPI LoadLibrary(   _In_ LPCTSTR lpFileName ); 参数 lpFileName [in] 模块的名称。这可以是库模块(.dll文件)或可执行模块(.exe文件)。指定的名称是模

  • 当使用System.loadLibrary()调用 Dll,两种方法: 1.设定环境变量。 比如:所编辑的Dll在目录“D:/cppProjects/nativecode/release”内,将这个路径复制添加到电脑的环境变量中的path变量内即可。 2.设定项目属性。(开发推荐) 右击项目名|选择属性properties|在左边列表内选择“Java Build Path”|在右边选项卡用选择“s

  •     默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定--prefix,会将库安装在/usr/local/lib目录下;当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说,/usr/local/lib目录不在系统默认的库搜索目录中,需要将目录加进去。   1、首先打开/etc/ld.so.conf文件   2、加入

  • Linux中LoadLibrary()函数(zhuan)   2009-09-08 14:01:28|  分类: 默认分类 |字号 订阅 在MS的WINDOWS系统中有一个LoadLibrary()函数可以在程序运行时加载DLL,在Linux中有类似的功能么?高手请教! ---------------------------------------------------------------

  • 最近用到了dlopen函数,感觉挺有意思的,所以记录一下;   首先我们先编译一个动态库: 1、写一个add.c #include<stdio.h> #include "add.h" int add(int a, intb) {    return a+b; }   其中add.h就是下面一句: int add(int a, int b); 2、编译add.c: [root@loadlibrary

  • 若DLL不在调用方的同一目录下,可以用LoadLibrary(L"DLL绝对路径")加载。 但若被调DLL内部又调用另外一个DLL,此时调用仍会失败。解决办法是用LoadLibraryEx: LoadLibraryEx(“DLL绝对路径”, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); 通过指定LOAD_WITH_ALTERED_SEARCH_PATH,让系统DLL搜

  • 参考了这个博客:https://blog.csdn.net/cuglifangzheng/article/details/50580279 以及这个博客:https://blog.csdn.net/zhangbohh8662/article/details/47026519 若DLL不在调用方的同一目录下,可以用LoadLibrary(L”DLL绝对路径”)加载。 但若被调DLL内部又调用另外一个

  • 跨目录调用dll,你应该这样 1 用GetCurrentDir保存当前的工作目录 2 用SetCurrentDir将当前的工作目录,设置为你的DLL所在的路径,需要使用绝对路径 3 用LoadLibrary你的DLL 4 使用SetCurrentDir恢复到原来的工作路径 上面的方法不行的话, 试下: 若DLL不在调用方的同一目录下,可以用LoadLibrary(L"DLL绝对路径")加载。但若调

  • 关于 LoadLibrary 的疑问   Win32 API 中 LoadLibrary 函数的功能是加载某个库文件(通常是 dll 文件),然后返回 HMODULE 句柄,可以使用两个这个句柄来调用dll中的导出函数,一切似乎就这么简单。下面我们考虑深入一点,提出几个问题。 使用 Process Explorer 可以看到进程所加载的 dll,当然也可以看到使用 LoadLibrary 函数所加

  • 当使用System.loadLibrary()调用 Dll,两种方法: 1.设定环境变量。 比如:所编辑的Dll在目录“D:/cppProjects/nativecode/release”内,将这个路径复制添加到电脑的环境变量中的path变量内即可。 2.设定项目属性。(开发推荐) 右击项目名|选择属性properties|在左边列表内选择“Java Build Path”|在右边选项卡用选择“s

  • LoadLibrary 和 GetProcAddress、FreeLibrary LoadLibrary("文件名")返回得到的模块句柄,可以加载一个动态连接库或exe文件。 GetProcAddress(Hinstance,lpname)用来获取指定的动态连接库函数的地址 Hinstance为由LoadLibrary返回的模块句柄,lpname为文件名/函数名,返回值,成功返回动态连接库的地址,

  • 转自:http://blog.csdn.net/jdcb2001/article/details/1394883,个别地方进行了修改 引言 我见过相当多的用来说明在程序中如何使用从DLL中输出的class的代码,但这些方法都是通过隐式链接完成的。回忆一下DLL的概念,有两种方法可以使用DLL中输出的函数:一是在程序代码中简单地引用DLL中符号,这使得加载器在程序启动时隐式地加载(链接)所需的DLL

  • 随着软件规模的扩大,要求的功能也是越来越多,开发人员的参与也是越来越多。因此软件的功能划分,就成为了现代软件工程的重大任务,还有软件开发的并行性也越来越重要。为了解决这些问题,大家都会看到IT硬件发展非常迅速,功能也越来越复杂,但硬件中发展明显提高在于采用IC的方式来实现复杂的功能,也就是把大部份功能集成到一起,只要给出一些引脚就可以实现产品了。而软件中有没有相同于硬件中的IC呢?我想是应有的,就

  • 在利用loadlibrary显示装载某动态库的时候例如: HINSTANCE hDll = LoadLibrary("./abc.dll");  结果编译器报错说不能将char[]转换为LPCWSTR,    查阅msdn函数原型为 HMODULE WINAPI LoadLibrary(   __in          LPCTSTR lpFileName ); 将代码改为: HINSTANCE 

  • 默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定–prefix,会将库安装在/usr/local/lib目录下;当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说,/usr/local/lib目录不在系统默认的库搜索目录中,需要将目录加进去。 首先打开/etc/ld.so.conf文件 加入动态库文件所在的目录:执行

  • JNI 使用 Native 库时 一般用load 与 loadLibrary 两个方法,它们的区别主要如下分析。 加载的路径不同:System.load(String filename) 是从作为动态库的本地文件系统中以指定的文件名加载代码文件,文件名参数必须是完整的路径名且带文件后缀;而 System.loadLibrary(String libname) 是加载由 libname 参数指定的系

  • windows下的gcc下载参考【1】 写下如下代码sum.c #include "stdio.h" __declspec(dllexport) int sum(int a, int b) { return a + b; } 使用gcc编译 gcc -shared -o sum.dll sum.c 会生成dll文件 注意1: 上面代码可以直接写成 int sum(int a, int b) {

  • 若DLL 不在调用方的同一目录下,可以用LoadLibrary("DLL 绝对路径") 加载 但若被调DLL内部又调用了另外一个DLL,此时调用仍会失败。解决办法是用LoadLibraryEx; LoadLibraryEx("DLL 绝对路径",NULL,LOAD_WITH_ALTERED_SEARCH_PATH); 通过指定LOAD_WITH_ALTERED_SEARCH_PATH,让系统DLL

 相关资料
  • 问题内容: 我在家中使用linux,但在学校中我们使用Windows7。我想在我的USB上安装python,以便可以在Windows和linux上使用它(ubuntu 13.04)。有没有办法可以在USB上安装python,以便win和linux计算机都可以使用它?我对python 2.7更加感兴趣。我在Linux机器上安装了Wine。可能不理想,但我可以使用便携式python并在wine下运行它

  • 我将非常感谢任何帮助我可以得到以下。我有一个包含降水预测的excel电子表格。该表有两列(日和降水),有超过20,000行,即超过20,000天的降水。我把这张纸加载到AnyLogic上。我使用的是一个系统动力学模型,有一个叫做降雨的动态变量。在模拟的每一天中,我都希望降雨从加载的数据库中提取值,但不知道如何将动态变量链接到数据库。我已经尝试了以下方法:插入一个名为ProjectedRainfal

  • 动态链接库(也称为DLL)是Microsoft Windows最重要的组成要素之一。大多数与Windows相关的磁盘文件如果不是程序模块,就是动态链接程序。迄今为止,我们都是在开发Windows应用程序;现在是尝试编写动态链接库的时候了。许多您已经学会的编写应用程序的规则同样适用于编写这些动态链接库模块,但也有一些重要的不同。 动态链接库的基本知识 正如前面所看到的,Windows应用程序是一个可

  • 本文向大家介绍Python在Windows和在Linux下调用动态链接库的教程,包括了Python在Windows和在Linux下调用动态链接库的教程的使用技巧和注意事项,需要的朋友参考一下 Linux系统下调用动态库(.so) 1、linuxany.c代码如下: 2、编译c代码,最后生成Python可执行的.so文件 (1)gcc -c linuxany.c,将生成一个linuxany.o文件

  • 我已经研究这个问题将近一周了,但仍然有700个错误。绝对需要你的帮助!谢谢 问题:需要使用 适用于Windows Phone 8的Cocos2dx 在我的C/DirectX Visual Studio 2012项目中,它也使用C#/XAML UI。 给定:Cocos2dx-wp8作为应用程序。exe项目下载自http://www.cocos2d-x.org/projects/cocos2d-x/w

  • 主要内容:静态链接库,动态链接库,总结我们知道,C、C++程序从源文件到生成可执行文件需经历 4 个阶段,分别为预处理、编译、汇编和链接,本节将重点围绕链接阶段,对静态链接库和动态链接库做详细的讲解。 有关链接操作的具体细节,感兴趣的读者可阅读《 到底什么是链接,它起到了什么作用?》和《 符号——链接的粘合剂》这两节。总的来说链接阶段要完成的工作,就是将同一项目中各源文件生成的目标文件以及程序中用到的库文件整合为一个可执行文件。 通过