Articles of DLL

windeployqt错过了一些库,并获取其他不需要的

通常要部署一个Qt项目我要么: 继续运行它,并find它抱怨的库缺失,并添加它们,直到没有更多。 使用依赖的步行者,让我最大的方式(如果不是全部),然后回到选项1。 或者只是创build一个静态链接的版本(有时在屁股疼痛) 所以我现在想试试windeployqt,对于我在D:\install\Qt\5.5\mingw492_32\bin\ 然后我运行它使用: D:\>D:\install\Qt\5.5\mingw492_32\bin\windeployqt.exe d:\software\build-qtGuiTestApp-Desktop_Qt_5_5_0_MinGW_32bit-Debug\debug 这里是结果输出: D:\software\build-qtGuiTestApp-Desktop_Qt_5_5_0_MinGW_32bit-Debug\debug\qtGuiTes tApp.exe 32 bit, debug executable Adding Qt5Svg for qsvgicond.dll Skipping plugin qmldbg_qtquick2d.dll due to disabled dependencies. Skipping plugin qmldbg_tcpd.dll due to disabled dependencies. Direct dependencies: Qt5Core Qt5Network Qt5WebKitWidgets Qt5Widgets All dependencies : Qt5Core Qt5Gui Qt5Multimedia Qt5MultimediaWidgets Qt5Networ k Qt5OpenGL Qt5Positioning Qt5PrintSupport Qt5Qml Qt5Quick Qt5Sensors Qt5Sql […]

如何将第三方Windows DLL组织到我的应用程序文件夹中的子文件夹中?

我们有一个应用程序依赖于许多第三方DLL组。 不幸的是,这些第三方DLL的编写者没有一个非常一致地命名它们,所以很难看出哪个DLL是什么组的一部分。 为了尝试和pipe理这个,我们希望将第三方DLL组放在应用程序文件夹的一个文件夹中,而不是像这样在应用程序旁边。 –> Application Folder –> Application.exe –> MyDLL1.dll –> MyDLL2.dll –> Third Party 1 DLL folder –> Third Party 1 DLL 1.dll –> Third Party 1 DLL 2.dll –> Third Party 1 DLL 3.dll –> Third Party 2 DLL folder –> Third Party 2 DLL 1.dll –> Third Party 2 DLL 2.dll –> […]

在Windows下dynamic加载的库的地址范围

我有一个工作程序,加载LoadLibrary插件。 新的要求:在代码的某一点,我给了一个指针,我需要testing这个指针是指向代码还是插件的静态数据。 bool is_pointer_into_plugin(void *p, HMODULE h); 等价地,我需要检索指针指向的插件(如果有的话)。 我还需要知道指针是指向主程序的代码还是静态数据(最好是区分只读区域和读写区域)。 HMODULE plugin_containing_pointer(void *p); 等同地,我需要能够检索插件映射的范围(地址和大小)。 我也需要这个主要程序的信息。 我如何实现is_pointer_into_plugin ,或者plugin_containing_pointer ,或者其他什么东西? 如有必要,我可以更改对LoadLibrary的调用。 查找应该尽可能快,加载时间代码不需要很快。 在单独的进程中运行插件并通过共享内存进行通信不是一种select。 该程序必须运行在Windows XP和以上(和Linux,但这是另一个问题 )。 我需要的信息或多或less是Sysinternals公用事业listdlls报告的,所以我试图找出它是如何实现的。 我看到了使用NtQueryInformationProcess来检索链接到LDR_DATA_TABLE_ENTRY的PEB结构的LDR_DATA_TABLE_ENTRY 。 看起来很有希望,但是: 我可以看到一个DllBase ,看起来它可能是每个DLL的起始地址(是吗?),但没有大小。 NtQueryInformationProcess的文档将NtQueryInformationProcess标记为不可移植的,但是并不表示我正在尝试做什么。 在我的系统中, PEB中唯一的字段是BeingDebugged和SessionId ,加上一些Reserved N字节数组 – 不是一个好兆头。 我如何枚举插件的地址范围,或testing一个指针是否在一个插件,或确定一个指针指向哪个插件?

问题使用pantheios文件股票后端

我想使用pantheios文件股票后端从我的dlllogin在c + +。 文件被创build,但没有被写入文件。 这是我的代码片段 if (pantheios::pantheios_init() < 0) { MessageBox(NULL, "Init Failed", "fvm", MB_OK); }else { MessageBox(NULL, "Init Passed", "fvm", MB_OK); pantheios::log_INFORMATIONAL("Logger enabled!"); } DWORD pid = GetCurrentProcessId(); sprintf_s(moduleName, sizeof(moduleName), "C:\\%d.log", pid); pantheios_be_file_setFilePath(moduleName, PANTHEIOS_BE_FILE_F_TRUNCATE,PANTHEIOS_BE_FILE_F_TRUNCATE, PANTHEIOS_BEID_LOCAL); pantheios::log(pantheios::debug, "Entering main"); 我得到Init Passed消息框,但没有日志语句被转储到文件中。

在DLL中声明的全局variables会发生什么?

比方说,我用C ++编写了一个DLL,并用一个不重要的析构函数声明了一个类的全局对象。 当DLL被卸载时会调用析构函数吗?

我如何从Ruby调用Windows DLL函数?

我想使用Ruby访问DLL中的函数。 我想使用C的低级访问,同时仍然保持编写Ruby代码的简单性。 我如何做到这一点?

用Go 1.7构build一个dll

有没有办法在Windows下build立一个DLL的Go v1.7? 我尝试了一个经典 go build -buildmode=shared main.go 但是得到 -buildmode = shared在windows / amd64上不受支持 更新好的,我有我的答案。 对于那些有兴趣的人: https : //groups.google.com/forum/#!topic/golang-dev/ckFZAZbnjzU

在命令行上创build并链接到Win32 DLL的确切步骤是什么?

这是我的库Lib.c文件: #include <stdio.h> int helloworld(){ printf("Hello World DLL"); } 这是我的exe Main.c文件: int helloworld(); int main(int argc, char** argv){ helloworld(); } 我想创buildLib.dll和Main.exe ,其中Lib.dll来自Lib.c和Main.exe链接。 具体步骤是什么?

如何正确创build一个nim / nimrod的Windows DLL

我想从nim代码创build一个dll。 但是我没有注册一些其他出口比“NimMainInner”。 即使我尝试这个简单的例子,它不工作: proc Hellow(): cint {.exportc.} = echo("hello") return 1 我用nim c –app:lib libh4x.nim编译它nim c –app:lib libh4x.nim和nim c -d:release –app:lib –no_main libh4x.nim 我使用Nim Compiler Version 0.11.2 (2015-05-04) [Windows: i386] 检查我使用dllexp.exe的DLL。 我也试图用python ctypes加载dll,但是我的导出都没有显示或可调用。 不过,我可以用hexeditor在生成的dll中看到proc的名字。 我在这里错过了什么?

如何将parameter passing给DLL初始化(例如,当通过LoadLibrary加载)?

如何将parameter passing给通过LoadLibrary加载的DLL的初始化函数? 有没有可能? 没有诉诸某种导出的function或共享内存,即是。