草庐IT

DLL_EXPORT

全部标签

c - .dll 只能在 Windows XP 和 Vista 上正常工作,但不能在 7 上正常工作?

我有一个Windows.dll文件(来自第三方-已停止支持它,我没有C源代码来纠正问题)。我在我的项目中使用.dll。.dll文件在WindowsXP/Vista下运行良好(因为它是在这些操作系统版本为当前/最新版本时发布的)-现在的问题是该项目现在仅限于WindowsXP/Vista用户(由于那个.dll)-当它在Windows7下运行时会出现轻微故障(即与WindowsXP/Vista相比产生不同的结果)。我认为问题是Microsoft一定更改了一些影响兼容性的东西(在Windows库或其他东西中?)。所以我想知道-我知道它并不是最好的选择,但作为一个临时/hackish解决方法是

.net - 从 .NET Windows 服务调用 native DLL 失败

我有一个nativedll形式的第3方API,我使用DllImport从C#调用它。此nativedll取决于打开的第3方应用程序。当我正常运行代码时,API会执行预期的操作并驱动应用程序。但是,当我运行与Windows服务相同的代码时,即使是我自己,API也会返回我在关闭应用程序时看到的相同(未记录的)错误代码;ProcessExplorer确认nativedll已从应用程序目录正确加载。可能是什么原因造成的,我该如何解决这个问题? 最佳答案 有点旧,但它是搜索中排名靠前的结果之一。所以我认为我的数据仍然有用。Ihavea3rdp

windows - 运行非线程安全 Dll 的多个 'instances'?

我有一个dll的源代码还不是线程安全的。dll相当复杂,需要相当长的时间才能使其线程安全。所以我想出了独立运行Dll的几个“副本”的想法。最简单的方法可能是创建N个重命名的Dll副本并为每个线程加载一个单独的Dll。这是可行的解决方案吗?有没有更好的类似方法?是否可能存在一些包装代码?我知道这根本不是一个好的工程解决方案。请不要怪我。但它可能会解决许多问题。编辑2017我已经做到了,而且没有任何问题。伟大的!但请注意以下几点:http://msdn.microsoft.com/en-us/library/2s9wt68x%28v=vs.80%29.aspx如果DLL将任何非本地数据或对

windows - 是否可以将 DLL 加载到地址空间而不是从文件系统文件加载?

我必须创建一个包装器DLL来导出一些符号(函数)。在其资源中,它包含另一个实际执行此任务的加密DLL。在包装器DLL初始化时,它解密原始的DLL,将其保存在文件中,并通过LoadLibrary加载到地址空间。但是我想避免将此DLL保存在文件中。我知道这并不能保证防弹保护,实际上可以转储进程虚拟内存并在那里看到它。我还知道可以创建一个具有FILE_FLAG_DELETE_ON_CLOSE属性的文件,这确保该文件在进程终止后立即被删除。但我仍然想知道是否有一个选项可以“不从文件”加载DLL。到目前为止,我想到了以下几点:分配一个具有足够保护的虚拟内存块(PAGE_EXECUTE_READ或

c++ - 包括来自 C++ 的 C-DLL

这感觉像是一个菜鸟问题,所以如果是骗人的,请指出正确的位置:)我尝试将用C编写的DLL包含到C++程序中。它没有用;gcc说test.cpp:xxx:error:toomanyargumentstofunction.这是一个最小的工作示例:DLL函数的包装器:/*myWrapper.h*/#ifndef_MYWRAPPER_H#define_MYWRAPPER_H#include#ifdef__cplusplusextern"C"{#endifexternFARPROCEXPORTED_functionNameP;intGetDLLpointers();#ifdef__cplusplu

c++ - 在 DLL 中的哪里调用 LoadLibrary?

我正在制作一个DLL,它使用LoadLibrary动态加载另一个DLL(winsock)。我读到我不应该在DllMain中调用LoadLibrary,但我反复使用它并且不想每次使用它时都必须调用LoadLibrary/GetProcAddress。所以我的问题是:在DLL中调用LoadLibrary的最佳位置在哪里?LoadLibrary/GetProcAddress有多快?在每个函数中都这样做是不是开销很大? 最佳答案 创建一个在DllMain之外进行设置的初始化函数。您的代码会在加载DLL后调用该函数,然后它可以调用完成初始化所

windows - 是否可以找到 DLL 中声明的结构的大小?

我们的产品中有大量相互关联的DLL。这是一个非常“古老”的产品(因为它已经开发了20多年),并且在过去因多个版本的VisualStudio的结构打包默认值不同而受到影响。因此,在许多情况下,#pragmapack未在DLL头文件中使用,而是在项目属性中设置了结构对齐方式,我们可能会遇到这样的情况:导入DLL(通过其库和header)的项目具有不同的结构对齐方式,并可能导致结构大小不匹配。结构可以通过“意外”正确调整大小这一事实使情况变得复杂-例如如果结构的所有成员都是unsignedint那么DLL中的pack(4)和导入项目中的pack(2)可以正常工作.当然,直到有人修改结构以添加

MATLAB 的自定义 C dll - loadlibrary 错误

我有一个为MATLAB编写的自定义dll,它在我们的开发机器上运行良好。但是,当我在没有开发工具的干净机器上尝试时,我收到消息:>>loadlibraryCMatLabCMatLab.h???Errorusing==>loadlibraryat279MicrosoftVisualC++2005or2008isrequiredtousethisfeature.经过一番研究,似乎很明显需要编译器在运行时解析头文件,所以我安装了标准的WindowsSDK,运行mex-setup来选择编译器,但我仍然得到同样的错误信息。这就是我为选择编译器所做的。>>mex-setupPleasechoose

c++ - 函数名称与序数值 - 从 DLL 模块获取函数地址

我有一个DLL(WinDll.dll),它导出一个名为“SampleFunction”的函数。DLL与正在执行的应用程序位于同一文件夹中。现在,当我尝试按名称获取导出函数的地址时,它会给出错误127,但是,当我使用函数的序号值执行相同操作时,一切正常。任何想法如何以及为什么会发生这种情况?以下是加载并尝试使用导出函数的代码。我还附上了IDAProo的剪辑,其中显示了从WindDll.dll导出的函数。#include#includetypedefint(WINAPI*ProcP)(HINSTANCE,HINSTANCE,LPSTR,int);intWINAPIWinMain(HINST

c++ - 在 Qt 中使用第三方 dll(没有可用的 .lib 文件)

这个问题在这里已经有了答案:Howtomakea.libfilewhenhavea.dllfileandaheaderfile(6个答案)关闭8年前。我的一个friend让我创建一个应用程序来使用“VellemanVM167”来控制一些东西。这个VM167只不过是一个带有一些GPIO和几个ADC的USB接口(interface)卡。此VM167附带一个SDK,由两个DLL(VM167.dll和MPUSBAPI.dll,怀疑第一个DLL中使用了最后一个)和一个头文件VM167.h组成我以前在Delphi中成功使用过该卡,但现在想转换为Qt。由于这只是一个简单的项目,我认为现在正是时候。我