Tag: dll

如何为mingw32指定dll onload函数?

我可以使用mingw正确编译DLL并执行导出/导入操作。 我正在寻找的是正确定义dll onloadfunction,就像在MS VC产品中一样。 谷歌没有发现任何事情。 任何人有任何想法或指向教程的链接?

由各种编译器编译的链接库

我想更详细地询问我最近在这里得到的答案(第3章): 编译语言基础知识 如果我用C和MinGW写,我链接到VC编译的C ++库 – 它会工作吗? 我怎么事先知道? 换句话说,如果我能够在没有警告的情况下创建链接到该C ++ .dll的.exe,并且我能够运行(只运行,没有进一步测试).exe,它是否意味着它有效? 在某些时候它不会被核心转储吗? 为了完全确定,我是否需要自己重新编译库源以及与之链接? 我知道有时连接C ++和C代码可能会有问题,但是如何知道它何时起作用? PS:是的,我看到使用库编译了…我只是觉得我的问题略有不同。

python在哪里查找由ctypes.cdll打开的dll。在Windows上的?

我是无法在互联网上找不到一个简单的答案,所以也许将来有一个因为这个问题! 我正在使用pywiiuse,一个用于Windows上的C wiiuse库的python包装器。 通过在源代码目录中包含dll,header和library,我得到了几个简单的C示例。 但是,我想知道在哪里放dll以便pywiiuse会找到它。 查看源代码显示它按如下方式加载: dll = ctypes.cdll.wiiuse 当我在与测试示例相同的目录中使用dll时,运行示例会产生模块未找到exception。 python在哪里寻找DLL?

SetWindowsHookEx函数返回NULL

我正在处理DLL注入,但得到错误 无法挂钩进程:87参数不正确。 目标进程以及dll都是64位。 注入代码是: BOOL HookInjection(TCHAR target[], TCHAR *dll_name) { // https://msdn.microsoft.com/en-us/library/windows/desktop/ms644990(v=vs.85).aspx // SetWindowsHookEx can be used to inject a DLL into another process. A 32 – bit DLL cannot be injected into a 64 – bit process, // and a 64 – bit DLL cannot be injected into a 32 – bit process.If an […]

在C / C ++中捕获DLL崩溃

我正在从DLL调用函数,如下所示: __declspec ( dllimport ) bool dll_function(…); int main() { […] if (dll_function(…)) { […] } } 在某些情况下,我传递给DLL函数的数据将导致DLL崩溃。 有可能捕获这个,所以我的应用程序也不会崩溃(没有修改不是由我创建的DLL)?

在调用dlclose时,共享库中的全局变量会发生什么变化?

如果通过dlopen和dlclose机制使用共享库(或DLL),并且如果创建的共享库有一些全局变量,其内存来自堆,那么当调用dlclose时这些变量和内存会发生什么? 如果在同一个进程中再次调用dlopen,那么行为是什么?

使用JNA和Ada的Interface.C包将Ada动态库与Java接口

我必须写一个DLL应该提供一个简单的服务,需要: 在字符串或字节数组中(相当于char *) IN整数表示in char *的大小 IN等效于库中用于写入数据的char *缓冲区 用于写入的可用char *缓冲区的大小 将有效的写入大小输出到out char *缓冲区 使用C视角,签名应如下所示: void myService (char* inBuffer, // as in string int anInteger, // as in param char* outBuffer, // used as out buffer, but initalized by calling code int outBufferSize, // the initaliaed size int usedBufferSize // used as out param, the actually […]

Mozilla使用带有js-ctypes的C DLL

我想建立一个DLL,然后使用它与Firefox扩展。 我设法在Windows下使用gcc构建DLL: #include int add(int a,int b) { return(a+b); } 我现在尝试通过我的dll使用它。 阅读了一些post,尤其是这篇文章后,我无法完成这项工作: 将二进制组件引用到js-ctypes 每次我尝试ctypes.open时,都会收到错误消息: 无法加载库 。 但是,DLL路径是正确的。 这是JS代码: Components.utils.import(“resource://gre/modules/ctypes.jsm”); AddonManager.getAddonByID(“greenfox@octo.com”, function(addon) { var libcPath = addon.getResourceURI(“components/library.dll”); if (libcPath instanceof Components.interfaces.nsIURI) { var libc = ctypes.open(libcPath.path); var libc = ctypes.open(libc); /* import a function */ var puts = libc.declare(“add”, /* function name */ ctypes.default_abi, /* call […]

VB6 – 使用指针声明和调用C DLL

我有一个旧的C DLL,我用来从Ruby调用,但现在我需要从VB6调用它,我无法弄清楚这样做的正确方法。 这是我需要的function的标题: int Decrunch(const BYTE *src, BYTE *dest, DWORD src_length) * src是一个字节序列,将由函数解密 * dest是一个缓冲区,它将接收解密的数据。 我可以使用dest = NULL调用该函数,它将返回解密数据的大小,因此我可以使用它来创建具有正确大小的缓冲区。 我试图用src和dest声明它作为字符串(就像我在Ruby中做的那样)但是它不起作用。 我也尝试将它们声明为Byte并传递一个字节数组的第一个元素,正如我在一些教程中指出的那样,但我认为我没有正确地做到这一点。 有人可以帮我弄这个吗? 谢谢!

从GCC链接到winmm.dll

我想使用gcc中的mciSendString来构建一个dll,所以我需要链接到winmm.dll库。 我试过这样的事情: gcc -c -o dllTest.o dllTest.c -lC:\Windows\System32\winmm.dll 但是当我尝试构建dll时,我得到了mciSendString的未定义引用。 从gcc链接到winmm的正确方法是什么?