草庐IT

DLL_EXPORT

全部标签

c++ - Win32 DLL 导入问题 (DllMain)

我有一个nativeDLL,它是另一个应用程序的插件(我基本上对它的控制为零)。一切正常,直到我链接到一个额外的.lib文件(将我的DLL链接到另一个名为ABQSMABasCoreUtils.dll的DLL)。该文件包含我想使用的来自父应用程序的一些附加API。我什至没有编写任何代码来使用任何导出的函数,但只是链接到这个新的DLL中会导致问题。具体来说,当我尝试运行该程序时出现以下错误:应用程序未能正确初始化(0xc0000025)。单击“确定”终止应用程序。我相信我在某处读到这通常是由于DllMain函数返回FALSE。此外,以下消息将写入标准输出:错误:在组件初始化之前尝试内存分配

Simlink生成dll与unity通信的一种方法

本文介绍Simlink生成dll与unity进行通信的一种方法!本文所使用的软件:Matlab2022a;unity2021LTS;VS2019profession所有文件尽量放置一个文件下,且路径不能含有中文。1打开matlab,修改路径(即需要保存的文件位置)2设计simlink模型生成C代码2.1设计以下传递函数模型2.2添加系统输入输出鼠标右键点击空白处点击浏览打开模型资源管理器,点击BaseWorkspace,点击添加,添加自定义; 对象名称设置两个,分别为in,out,对象类均为mpt.Signal  设置完成如下: 返回Simlink,右击输入,选择属性,信号名称设置为上一步设置

c++ - 如何修改运行时加载的 DLL 的导入地址表

我想Hook在运行时从加载的DLL调用的函数,我使用了“WindowsViaC/C++”一书中的CAPIHook类(通过安装系统范围Hook完成的DLL注入(inject)和通过修改IATHook)但只有当DLL名称/符号存在于可执行文件的IAT中时,此代码才有效。(即隐式DLL链接)这是动态链接库代码:CAPIHook::CAPIHook(PSTRpszCalleeModName,PSTRpszFuncName,PROCpfnHook){//Note:thefunctioncanbehookedonlyiftheexportingmodule//isalreadyloaded.Aso

c# - 从 C++ DLL 在 C# 中触发事件

我有一个与Cisco服务器(UCCX)通信的非托管C++DLL。它通过TCP/IP向服务器发送消息和从服务器接收消息。现在它接收到一些类型的消息,其中包含一些需要发送到C#GUI的参数,该GUI将在屏幕上显示这些参数。请告诉我从这个DLL触发C#事件的有效方法。 最佳答案 http://blogs.msdn.com/b/davidnotario/archive/2006/01/13/512436.aspx似乎回答了你的问题。您在C#端使用委托(delegate),在C++端使用标准回调。C++方面:typedefvoid(__std

c++ - VS2010 报告 DLL 中静态类的错误内存泄漏

MemoryleakswhencallingITKfromVisualStudioDLL的后续问题我将问题细化为最简单的例子。structA{public:A(){mp_data=newint(0x42);}~A(){deletemp_data;}int*mp_data;};Aa;当在DLL中定义此类全局类时,VisualStudio调试CRT报告mp_data在应用程序关闭时泄漏。除了禁用泄漏报告之外,有人知道解决方法吗? 最佳答案 如果您在主函数的末尾调用_CrtDumpMemoryLeaks(),则行为是预期的,因为mp_da

c++ - 警告 C4251 : needs to have dll-interface to be used by clients of class

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:std::vectorneedstohavedll-interfacetobeusedbyclientsofclass'Xwarning这是我在该组中的第一篇文章。我正在创建一个DLL并在应用程序的主文件中调用它。代码编译正常,但出现以下错误:warningC4251:'PNCBaseClass::m_vAvailChannelsFromRx':class'std::vector'needstohavedll-interfacetobeusedbyclientsofclass'PNCBaseClass'3>w

c++ - Visual Studio 2013 中的 msvcr120.dll 和 msvcr120_app.dll 有什么区别?

当我使用VisualStudio2013预览版构建Windows应用商店应用时,我注意到我的应用二进制文件依赖于msvcr120_app.dll。这个DLL是什么?我还注意到msvcr120_app.dll没有安装在“C:\Windows\System32”中,而msvcr120.dll安装在那里。我不是很清楚msvcr120_app.dll和msvcr120.dll有什么区别?如果System32中未安装依赖项msvcr120_app.dll,我的应用程序如何运行(当我在VisualStudio项目中按F5时)? 最佳答案 在Vi

c++ - 使用 dll 库时,是否需要包含用于构建 dll 的所有头文件?

我已经从C++源代码构建了一个共享库(.dll)。现在,当我想在另一个程序中使用这个库时,我是否需要包含最初用于构建库的所有头文件,或者只包含属于我的(新)程序中使用过的函数的头文件够了吗?库中有许多函数在我的新程序中没有直接使用,但是,不用说,它们都被程序中的函数使用了。(所以它们也在程序中间接使用,如果不需要包含它们才奇怪。) 最佳答案 头文件并没有什么神奇之处,它们只是确保您的.cpp文件可以访问它需要的所有声明和定义的便捷方式。因此,仅在每个文件中包含您实际需要的内容(1)。以上是指在您的文件中放置#include语句——仅

c++ - 过程入口点无法位于动态链接库 Core.dll 中

我正在将我的项目转换为使用DLL,并试图拆分我的Singleton类以避免使用模板。我的类LudoMemory,最初继承自Singleton。我现在正在尝试为其提供销毁和创建自身的功能,并让我的主引擎不依赖于Singleton。我写了一个像这样的简单销毁方法:LudoMemory*memory_Singleton=NULL;voidLudoMemory::Destroy(){LUDO_SAFE_DELETE(m_Singleton)}在运行程序时(没有编译器错误)我收到这个错误:Theprocedureentrypoint?Destroy@LudoMemory@@SAXXZcouldn

c++ - 为什么我肯定会输入 "procedure entry point could not be located in dll"却不能?

我有一个非常模糊的问题,但我希望有人能帮忙解决。我正在修改一个C++项目,昨天它还在工作,但今天就不行了。我很确定我没有改变任何东西,但为了完全确定我再次从SVN中检查了项目,我什至恢复到以前的系统还原点(因为这是一台工作计算机,它有时会secret安装更新等。).编译成功后,程序可以启动,但是我和它交互后,却报错:过程入口点?methodName@className@@UAEXXZ无法位于动态链接库libName.dll中。我在网上搜索过,但大多数人的问题似乎是由使用的DLL的旧版本引起的。我搜索了我的电脑,没有旧版本。如果我删除正确的版本,应用程序不会启动。如果我随后重新编译该项目