loadlibrary调试(loadlibraryw)

http://www.itjxue.com  2023-02-24 00:49  来源:未知  点击次数: 

关于LoadLibrary和LoadLibraryEx 的使用问题。

两个函数的主要区别是 LoadLibraryEx 多了个参数 dwFlags,可以设定一些动态加载 DLL 时的选项。

一般来说,LoadLibraryEx 加载 DLL 时并没有调用 DLL,也就是不会执行 DllMain,这样以来即使 DLL 本身存在错误也会映射成功的。而 LoadLibrary 加载时不旦旦映射,还会去调用执行 DllMain。

如果确认一个 DLL 本身不存在问题,但用 LoadLibrary 加载失败用 LoadLibraryEx 加载成功,此时一要看 DllMain 是否作出了某些限制,二要看 DLL 本身是否链接了其他 DLL。

VS2008怎么调试通过LoadLibrary动态加在的DLL

其实方法是很简单的,就是在DLL的项目属性里,"调试" - "命令" 那填上exe,在设置一下exe的工作目录,按F5即可调试,

我之所以调试不了,即断点无法名命中,是因为,我的"链接器" - "调试" - "生成调试信息" 填的居然是"否", 应该填"是(/DEBUG)"

如何调试matlab调用的dll

在Matlab的Help中搜索"Calling Functions in Shared Libraries"即可看到关于此内容的帮助文档。

下面以一个简单的小例子演示Matlab调用DLL的过程:

1、编译器准备

在Matlab的命令窗口输入:mex -setup

选择你的编译器,我的是:

[2] Microsoft Visual C++ 2008 SP1 in c:\Program Files\Microsoft Visual Studio 9.0

2、编写你自己的DLL

在Visual Studio 2008中新建一个Win32的Dll工程,不妨设名字为MatlabDllTest

编辑MatlabDllTest.cpp:

#include "MatlabDllTest.h"

double add(double x, double y)

{

return (x+y);

}

编辑MatlabDllTest.h:

#ifndef MATLABDLLTEST_H

#define MATLABDLLTEST_H

#ifdef __cplusplus

extern "C"

{

#endif

__declspec(dllexport) double add(double x, double y);

#ifdef __cplusplus

}

#endif

#endif

3、加载DLL:把编译连接之后产生的MatlabDllTest.dll和MatlabDllTest.h文件拷贝到Matlab的当前工作目录下,输入

loadlibrary('MatlabDllTest','MatlabDllTest.h');

(一定要有这步,如果dll不成功,会显示错误原因)

4、查看DLL中导出的函数

libfunctions MatlabDllTest -full

-full选项会列出导出函数的详细输入和输出参数,这是输出信息如下:

Functions in library MatlabDllTest:

double add(double, double)

5、调用函数

calllib('MatlabDllTest', 'add', 1.3, 4.6)

此时就会输出正确的结果

ans =

5.9000

总结:这个例子比较简单,只是为了演示整个过程,如果真的用到了Matlab来调用外部DLL的这种方式的话,就要注意DLL工程要符合Matlab的要求,详细信息请自己查看Matlab的帮助文件。

如何在linux下调试Java system.loadlibrary错误

 据我知道的Eclipse没有关系'的LD_LIBRARY_PATH。要树立正确的本地库路径的最简单的方法就是去项目属性-

Java构建路径-库然后展开或者JRE的系统库条目或(如果有的话)的

jar文件的本地库,选择“本地库位置”,然后单击“编辑...”并选择你的库。实际上它并设置-Djava.library.path变量,以便你必须包括这行,如果你开始从外面蚀你的程序的文件夹。

DLL怎么设置才能调试 在线等

1、32 位的程序的话,可以使用olldbg 简称od,它有loaddll 。

2、如果DLL是你写的,也就是你有源码,可以在DLL_PROCESS_ATTACH通知中,加上一句断点:

__asm int 3

然后,你写一个exe程序,loadlibrary()直接加载这个DLL文件,你用调试器,载入程序,直接运行,马上就会终断到断点处。

3、别人的DLL,你可以使用动态调试器, 在关键CALL上直接跟进去然后分析就好了。

4、静态反汇编分析,直接用IDA把DLL文件进行二进制分析。。自己看代码吧。

dnspy怎么调试断点调试DLL?

1、如果是自己编写的DLL库,可以在DLL源码中加入断点指令,比如c语言可以借助于内联汇编int3来进行中断。

2、如果是一个单纯的DLL库,可以通过loadlibrary这个函数来加载dll文件 ,然后进入 dll程序的领空后再进行设置。

(责任编辑:IT教学网)

更多

相关思科认证文章

推荐思科认证文章