Articles of DLL

如何查看DLL函数?

我有一个我想查看的DLL文件。 我想查看在该DLL中使用的function,任何人都可以帮助我?

64位Windows使用KERNEL64吗?

我正在用dumpbin查看一些库,我注意到所有的64位版本都链接到了KERNEL32。 在64位Windows上没有KERNEL64吗? 如果没有,为什么? 我所有的操作系​​统都是32位的,所以我不能只看。 谷歌search带来没有什么值得的,所以我怀疑,没有KERNEL64,但我仍然好奇,为什么这是。 编辑:我后来发现这是非常有用的。 MSDN指南x64

没有模块命名为'_pywrap_tensorflow_internal'

在尝试validationtensorflow-gpu的安装时,当试图执行“导入tensorflow为tf”时,我得到一个ImportError。 我在Windows 7上使用Quadro K620。使用pip安装Tensorflow。 以下是堆栈跟踪: Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\aagarwal>python Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AM D64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf Traceback (most recent call last): File "C:\Users\aagarwal\AppData\Local\Programs\Python\Python35\lib\site-packag es\tensorflow\python\pywrap_tensorflow_internal.py", […]

客户生气,打击未知的DLL依赖关系

我是一个为客户开发C ++ Windows应用程序的单人展示。 在过去的几个月里,我们一直在运行着与客户机器上缺lessDLL依赖关系相同的问题。 尽pipe我尽了最大的努力,但事情总是出错,我们生气的邮件又回来了。 我的老板和老板的老板对我很生气,客户也不开心。 我希望你们能够帮忙,并就如何获得交付物提供build议/想法。 之前的一些显而易见的: 我没有testing机器。 也就是说,我无法复制客户环境,也不会尝试在“干净”系统上安装应用程序,以便在发货前了解问题。 我已经尝试使用depends.exe来追查我的项目依赖于哪些版本的DLL。 我使用我已经能够以这种方式find的可重新分发的代码发运我们的代码。 之后,这是一个愤怒的客户电子邮件等待游戏。 我可以访问64位机器和32位机器来安装新版本。 它总是在那里工作。 我需要使用不能注册的第三方DLL(这是错误的地狱。) 我不应该使用Install Shield,任何其他自动化安装程序或编写安装脚本。 我提供关于如何安装应用程序的书面说明(解压缩,双击exe文件。) 我厌倦了为这个东西加热。 我错过了什么,我可以做什么? 在雇主的支持下我应该问什么? 我应该如何以他们提供的方式寻求支持? 更新: 虚拟机鱼雷。 他们不希望我花费我所有的时间来设置和拆分客户configuration。 相反,我现在正在与客户合作来获得基本configuration,以便我知道我应该瞄准的确切的机器设置。 如果不符合这个规格,我不再需要关心。 至less有什么地方去了…虽然我仍然喜欢testing机器。

捕获MFC应用程序在纯C ++ dll中生成的Windows消息

首先:这是可能的吗? 我有一个第三方DLL连接一些硬件。 它是用MFC编写的。 我收到(从DLL供应商)示例Visual Studio 2010解决scheme,它只有一个项目:一个MFC应用程序(.exe)调用第三方DLL有问题。 它工作正常。 当我尝试从我的DLL(这是简单的C ++,没有MFC,没有.NET)使用第三方DLL,我可以调用它的function很好,但有一个catch:示例MFC应用程序似乎“重写”按顺序MessageProc捕获第三方dll生成的某些消息。 虽然DLL有一个名为“RegisterFuncCallback”的函数,我使用它,我的callback永远不会被调用。 所以这里的问题是:如何在不创buildMFC应用程序的情况下捕获这些消息? (这甚至有可能吗?)

在dynamic加载的dll中查找name-mangled函数

我有一套明确被devise为仅用于C ++的API。 我不希望它们被C程序(或任何其他语言)使用,因此我输出命名空间和类的信息,而不是使用extern "C"path,并使用内联的效用函数来调用plain C函数。 现在我只处理在编译时链接的dll,这意味着将函数导入到可执行文件非常容易,因为它不涉及我的工作。 不过,我打算开发一个插件系统,这将需要我在运行时dynamic加载dll。 我能使用GetProcAddress()find名称改变的C ++函数吗?

如何使用SetWindowsHookEx和WH_KEYBOARD钩住外部进程

我想挂钩例如记事本没有成功。 做一个全局钩子似乎工作正常。 在XP SP2上testing。 编辑:修正的代码现在工作。 MyDLL代码 #include <windows.h> #include <iostream> #include <stdio.h> HINSTANCE hinst; #pragma data_seg(".shared") HHOOK hhk; #pragma data_seg() //#pragma comment(linker, "/SECTION:.shared,RWS") compiler error in VC++ 2008 express LRESULT CALLBACK wireKeyboardProc(int code, WPARAM wParam,LPARAM lParam) { if (code < 0) { return CallNextHookEx(0, code, wParam, lParam); } Beep(1000, 20); return CallNextHookEx(hhk, code, wParam, lParam); […]

如何select应用程序应链接到的VC 2008 DLL的版本?

我正在使用C ++的Visual Studio 2008 SP1。 编译时,Visual Studio需要select与应用程序链接的版本的CRT和MFC DLL,版本9.0.21022.8(= RTM),9.0.30729.17(= SP1)或9.0.30729.4148(=安全更新的SP1) 。 我想知道如何select哪个版本将链接。 有人知道吗? 注意 :使用私有程序集时 ,这一点很重要,因为您需要知道要将哪些版本的VC 9.0 DLL与.exe一起复制。 请注意 ,_BIND_TO_CURRENT_VCLIBS_VERSION标志只能确保清单中包含正确的版本。 运行时的DLL版本select显然不是基于清单文件中包含的版本来完成的。 即使清单文件说应该使用v21022,.exe也使用v30729 .DLL。 我知道这一点,因为它使用std :: tr1 :: weakptr,这是不存在于v21022。

C ++ LoadLibrary ERROR_NOACCESS“访问内存位置无效”。

好的,所以我有一种情况,在我写的DLL上调用LoadLibrary 。 这个对LoadLibrary的调用返回错误#998,或者ERROR_NOACCESS “对存储器位置的访问无效”。 有问题的DLL在一个configuration中使用MFC,而不是在另一个configuration中; 只有MFCconfiguration有这个问题。 它曾经工作 ,但我不知道我改变了什么:我实际上移动到非MFC版本,并已经修补了很多,我不知道我可以做什么,影响了MFC版本。 我不太了解DLL。 原来的加载代码实际上是给我的,我没有改变它。 以下是该代码: // submodule loading #ifndef MFC // Project uses standard windows libraries, define an entry point for the DLL to handle loading/unloading BOOL WINAPI DllMain(HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved) { _MESSAGE("DllMain called."); switch(dwReason) { case DLL_PROCESS_ATTACH: // dll loaded hModule = (HMODULE)hDllHandle; // store […]

在Visual Basic 6中访问dynamic加载的DLL(使用LoadLibrary)

我有一个需要创build一个DLL的包装,根据需要加载和卸载(对于这个问题的背景感兴趣,请参阅如何解决由Tomcat应用程序访问内存泄漏第三方DLL(无源代码)? )。 我在Visual Basic 6中完成,并使用下面的示例加载和卸载: Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Private Sub cmdTestLoadingDLL_Click() Dim lb As Long, pa As Long lb = LoadLibrary("D:\projects\other\VB_DLLs\TestDLL\TestDLL.dll") Msgbox "Library address: " + lb FreeLibrary lb End Sub 我可以看到使用Process […]