草庐IT

DLL_EXPORT

全部标签

windows - 如何使用 WinSxS list 重定向到旧版本的 DLL?

假设我有一个使用MSHTML的应用程序。安装IE9beta会更新MSHTML,这会破坏我的应用程序。我发现IE8dll的副本仍然存在于WinSxS文件夹中,所以也许我可以以某种方式使用它们而无需重新编译我的程序?WinSxS可以做到吗?我已经搜索了很长时间,但无法弄清楚如何重定向加载程序以使用IE8MSHTML(在WinSXS中)而不是IE9(在%SYSTEMROOT%\system32中)。任何想法/示例将不胜感激。 最佳答案 从那以后,我采用了不同的方法来解决这个问题。我将分享我最终所做的事情——我劫持了LoadLibrary并

c - 如何将参数传递给 DLL 初始化(例如,通过 LoadLibrary 加载时)?

如何将参数传递给通过LoadLibrary加载的DLL的初始化函数?有可能吗?也就是说,无需诉诸某种导出函数或共享内存。 最佳答案 没有直接的方法。最简单的可能是通过环境变量。它们可以在使用setenv调用LoadLibray之前轻松设置,然后DLL(在同一进程中)可以使用getenv检索它们。 关于c-如何将参数传递给DLL初始化(例如,通过LoadLibrary加载时)?,我们在StackOverflow上找到一个类似的问题: https://stacko

c++ boost asio 异步函数不能在 dll 中工作

我有这个基于教程的简单的boostasio代码,它在从exe中调用时工作正常,但在使用LoadLibrary从dll中运行时崩溃。它在提升代码而不是我的代码中崩溃。90%的时间它会在其线程互斥函数内部崩溃。与exe相比,在dll中执行代码时是否有任何限制?这是我的代码:Connection::Connection(boost::asio::io_service&ioservice):m_Socket(ioservice),m_Resolver(ioservice){}voidConnection::ConnectTo(){boost::asio::ip::tcp::resolver::

c++ - 当多次链接 DLL 时,导出的全局变量会发生什么情况?

假设我有一个头文件中包含以下内容的X.DLL:extern__declspec(dllexport)intfoobar;此foobar全局变量然后在实现文件的X.DLL中定义:intfoobar=1;现在假设我有两个DLL,A.DLL和B.DLL,它们链接到X.DLL,还有一个使用A.DLL和B.DLL的应用程序E.EXE:+---->A.DLL----+||E.EXE----++---->X.DLL||+---->B.DLL----+在这种情况下,表达式&foobar(foobar的地址)是否保证在A.DLL中求值时具有相同的值,并且B.DLL?也就是说,X.DLL的全局变量是存储了

c++ - 没有 DLL 的 JPEG 压缩

我想在Windows上将原始RGB图像数据(如有必要,我可以添加BMPheader)转换为JPEG。没有DLL可以这样做吗?我尝试静态编译IJGjpeglib,但我有VC++9,它只适用于VC++10 最佳答案 使用GDI+将图像保存到文件中。例如,参见http://msdn.microsoft.com/en-us/library/ms535407(VS.85).aspx有关如何保存到文件的信息。指定JPEG编码器。要将图像加载到Image类中,可以使用Bitmap类(继承自Image)。有几种方法可用:http://msdn.mi

c++ - 给定一个 dll/exe(带或不带 .pdb),我可以看到哪些 .obj 文件对其大小有影响吗?

我用一大堆cpp文件编译了一个dll文件。我想看看每个cpp对dll的最终大小有多大贡献,以减少它的大小(比如通过排除一些库)。有什么办法吗?谢谢! 最佳答案 这范围从非常困难(你向哪个对象收取库函数)到不可能(当使用整个程序优化来跨编译单元边界内联时)。我还建议它不是很有用。您需要知道要精简哪些功能,而不仅仅是哪些文件。在构建期间生成map文件(将/MAP传递给LINK.EXE)可能是您所能做的最好的事情。Thedocumentation还提到了一些关于符号组的内容,您也可以利用它们来发挥自己的优势。

c++ - 单例 : C++ shared dll

我正在创建一组共享单个dll的dll。共享库有一个单例。运行时,一些操作系统加载的库会生成我的单例的新实例。我如何才能强制所有使用我的dll的库和程序使用始终我的单例实例? 最佳答案 您不能只在多个进程之间共享您的单例实例。但您可以为此目的使用共享内存:以下示例演示了DLL入口点函数如何使用文件映射对象来设置可由加载DLL的进程共享的内存。共享DLL内存仅在加载DLL时持续存在。应用程序可以使用SetSharedMem和GetSharedMem函数来访问共享内存。http://msdn.microsoft.com/en-us/lib

windows - 未找到 Qt 创建者 : This application has failed to start because MSVCP110. dll

鉴于我为我的“WindowsVista”下载了“Qt64bitversion”,安装后,“QtCreator2.7.0”显示它基于“Qt5.0.2(32bit)”。但是,在创建新项目或打开现有项目时,会出现以下消息:此应用程序未能启动,因为未找到MSVCP110.dll。请注意,消息框本身的标题为“uic.exe-无法定位组件”。但是当我点击“确定”按钮时,它会创建项目(或打开它)。为什么会这样? 最佳答案 安装MSVC2012dll应该有所帮助:http://www.microsoft.com/en-us/download/det

windows - 如何用cmake生成.dll文件?

我正在尝试使用cmake中的源文件生成dll文件。它给出了配置完成和生成完成。但是.dll和.lib文件没有生成。请提供此问题的解决方案。我在root中的cmake配置是:CMAKE_MINIMUM_REQUIRED(VERSION2.8)PROJECT(mydllC)INCLUDE_DIRECTORIES(../common/include)ADD_SUBDIRECTORY(mydllbin)cmakeconfigurationinmydlldirectoryis:SET(my_lib_srcdllmain.cppmydll.cppfuncs.def)ADD_LIBRARY(mydl

windows - 动态与静态 DLL 链接不同

我有一个CDLL,想从DelphiXE3Update2调用它。奇怪的是,在我的项目中动态调用它似乎与静态调用它不同。这是要重现的“最小”代码(我已经更改了Lib/functionnames):programtestProject;{$APPTYPECONSOLE}{$R*.res}usesSystem.SysUtils,System.classes,Windows;functionkeylist_open(keylist:PPointer):Integer;external'libLib';varHandle:HINST;DLLName:PChar='libLib.dll';typeT