Articles of DLL

lua“存根”dll的目的是什么?

我正在考虑将Lua整合到一个C ++项目中,并且在Luabinaries发行版中存在两个二进制文件(lua51.dll和lua5.1.dll),这让我感到困惑 。 根据文件… 在Windows中,您的库或应用程序必须链接到存根库。 存根库是一个只有函数声明的库,它将DLL与Lua DLL绑定。 为什么? 在与第三方DLL链接之前,我从来不需要存根DLL?

Windows符号服务器

我想在Visual Studio中build立到Windows符号服务器的连接。 我有以下命令: symsrv*symsrv.dll*c:\localcache*http://msdl.microsoft.com/download/symbols 应该把c:\localcache部分改成什么?

如何使用MSVC在Windows中的命令行构buildDLL

我一直在做C约20年,但我从来没有build立一个DLL; 我一直喜欢静态链接。 我使用命令行cl.exe等和gnumake makefile来构build我的Windows应用程序。 我现在想build立一个DLL,我很困惑。 最终,我将以.lib和.dll结尾。 .lib包含存根代码,在运行时加载DLL并使用其中的代码。 我一直在查看命令行的lib和链接,并不清楚我应该做什么,产生这个输出。 所以我有一些问题。 cl是否需要额外的参数来表明它正在编译一个DLL? (我知道DLL导出的原型需要__declspec(dllexport))。 我知道链接需求/ DLL作为一个参数。 我会运行lib 和链接,分别产生.lib和.dll,或将链接产生? 我还需要知道什么?

DLL内存pipe理器混合

我写了一个应用程序,允许人们贡献插件来扩展function。 这样的插件被部署为DLL文件,框架可以在运行时select。 每个插件都具有一个工厂函数,在应用程序的生命周期中多次调用该工厂函数来创build对象。 到目前为止,为了处理这些对象的所有权问题,我在返回的对象上使用了一个简单的计数共享指针,以便在最后一个引用被删除时被销毁。 然而,这往往会在Windows上触发崩溃,因为在插件DLL中新对象不是不太可能发生的,但是后来(由于在共享指针上调用了deref()调用)在主应用程序中被删除,并AFAIK this malloc / free mixup在Windows上是不可以的。 我目前的解决办法是让deref()不要调用'delete this'。 直接而是一个'释放();' 必须由插件实现的function,并调用“删除这个”。 然而,每个插件都必须实现这个微不足道的function是非常令人讨厌的 – 我为此提供了一个方便的macros插件作者必须使用的工作。 有人可能有其他的想法吗? 到目前为止,我的方法是所有由插件贡献的对象都被分配到插件中,并在那里被释放 – 当然,另一种方法是让所有内存在主应用程序中分配(通过提供一个类似malloc的函数的指针到他们可以根据需要调用的插件),并在那里发布。 这个问题是对插件作者来说不是那么方便,我想。 我对这个问题有任何其他观点感兴趣。 更新:我刚刚意识到,我可以重新实现运算符new和运算符删除插件返回的对象的基类,以便new'ing它们并删除它们将始终导致函数调用到同一模块(以便所有分配和免费都在插件或框架中完成)。

添加一个特定于应用程序的path,所以它可以从Windows的命令行运行

遵循微软的指导, http://msdn.microsoft.com/en-us/library/ee872121(VS.85).aspx ,我能够让我的程序能够使一个程序解决dynamic库是必需的,以便它的工作。 所以我给我的可执行文件添加一个完整名称和path的值,并且使用DLL文件目录的完整path将子项添加到此条目(命名path)。 还有魔法。 有用。 我去开始菜单,并键入myprogram.exe,它启动,现在能够正确定位的dll文件。 但是,如果我使用命令cmd.exe启动命令提示符,然后尝试运行myprogram.exe不能够解决该DLL的了。 出于某种原因命令提示符似乎不尊重/读取registry的值设置HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Apppath 任何build议,我怎么能得到这个行为,从命令提示符以及从开始菜单中工作?

当'OrdinalBase`字段设置为1时,kernel32.dll如何导出一个0的序号?

看看它加载到内存中的kernel32.dll,我看到下面的导出序号表: (gdb) x /400hd $eax 0x776334b0 <Wow64Transition+71576>: 3 4 5 6 7 8 9 10 0x776334c0 <Wow64Transition+71592>: 11 12 13 14 15 16 17 18 0x776334d0 <Wow64Transition+71608>: 19 20 21 22 23 24 25 26 0x776334e0 <Wow64Transition+71624>: 27 28 29 30 31 32 33 34 0x776334f0 <Wow64Transition+71640>: 35 36 37 38 39 40 41 42 […]

JAVA应用程序随机崩溃的DLL问题

我有一个JAVA应用程序通过COM与.Net应用程序进行通信。 Offlate(因为我们已经从Windows 2003服务器迁移到Windows 2012 R2服务器 ),Java应用程序会随机崩溃。 有时我们会看到应用程序崩溃,所有相关的控制台closures,因为有时我们观察到应用程序和控制台仍然存在,但它已经挂起。 重新启动应用程序大多数时间解决了这个问题。 在Windows系统中的事件视图将指向DLL的一些问题。 我有这个问题是类似的,但我们正在使用JAVA 8更新71 32位的Windows 2012服务器R2上,所以我不认为这个解决scheme适用于我们。 有人可以帮我这个吗? 我们的窗户是更新的,但如果有人能指点我们的颗粒包装,我会感激,然后我可以检查它是否在那里。 下面列出的是我们将在Windows事件查看器中得到的错误日志。 Version=1 EventType=APPCRASH EventTime=131281548825671250 ReportType=2 Consent=1 ReportIdentifier=c0ed1792-d3d2-11e6-bbd4-547879605a0a IntegratorReportIdentifier=c0ed1791-d3d2-11e6-bbd4-547879605a0a WOW64=1 Response.type=4 Sig[0].Name=Application Name Sig[0].Value=java.exe Sig[1].Name=Application Version Sig[1].Value=8.0.710.15 Sig[2].Name=Application Timestamp Sig[2].Value=5679f9aa Sig[3].Name=Fault Module Name Sig[3].Value=ole32.dll Sig[4].Name=Fault Module Version Sig[4].Value=6.1.7600.16385 Sig[5].Name=Fault Module Timestamp Sig[5].Value=4a5bdac7 Sig[6].Name=Exception Code Sig[6].Value=c00000fd Sig[7].Name=Exception Offset Sig[7].Value=0002c8cc DynamicSig[1].Name=OS Version DynamicSig[1].Value=6.1.7600.2.0.0.272.7 […]

在Windows中拦截移动命令

我正在为一个文档标记软件的插件工作。 我想拦截在Windows资源pipe理器中的移动操作,并让标记软件来处理它。 我正在考虑钩,DLL注入。 MOVE可以由用户以几种方式发起,我需要拦截所有这些。 有没有人有其他的想法。 如果你可以发布一些示例链接,这将是很好的。 TIA Sujay

检查系统中是否存在DLL

快速的问题。 我想知道在我的应用程序正在执行的系统中是否存在一个DLL。 这在C#中可能吗? (可以在所有的Windows操作系统上运行?) 对于DLL我的意思是一个非.NET的经典的DLL(一个Win32的DLL) (基本上我想做一个检查,因为我使用的DLL可能会或可能不会出现在用户系统上,但我不希望应用程序崩溃而没有警告,当这不存在:P)

Windows中的Pygame:ImportError:DLL加载失败

我刚安装了PyGame 1.9.1(到现有的python 2.6.4上)。 Python和它的标准库工作,但是,即使能够findpygame模块(正确)python有一个问题。 Traceback (most recent call last): File "C:\foo\bar\firstGame.py", line 2, in <module> import pygame File "C:\python264\lib\site-packages\pygame\__init__.py", line 95, in <module> from pygame.base import * ImportError: DLL load failed: The specified module could not be found. 这是怎么发生的? 谷歌search产生了以下回应,我试图无济于事: http://www.daniweb.com/forums/thread181323.html我已经检查确实base.pyd可以在C:\python264\lib\site-packages\pygame http://www.kelvinsthunderstorm.com/py2exe-and-pygame-dlls/问题似乎不是只有selectDLL丢失,而是所有这些都是 有谁在那里解决了win + pygame的问题? 谢谢 编辑:根据要求添加更多信息: – Windows版本:Windows Vista(定期更新) – 使用安装程序:Windows MSI安装程序 – 安装于:所有用户 […]