草庐IT

dll丢失

全部标签

c# - 将(非托管)C++ 移植到 C# 与使用 C++ 作为 C# 应用程序中的 DLL

我有一个用普通旧C++(无.NET/托管代码)编写的代码库,我正在将使用此代码的应用程序移植到C#。我面临两个选择:用C#重写C++代码,实现同样的功能;将C++编译为DLL,并将其用作C#应用程序中的库。我是C#的新手,非常不熟悉在C#应用程序中使用非托管代码库的含义(或者如果有的话)。代码本身大小适中;用C#重写可能只需要几天时间,但我的想法是让代码保持原样也可以让我在其他应用程序中使用它(并在UNIX等上编译它)。做这个决定时我应该注意哪些事情?在C#应用程序中使用DLL是否有任何主要缺点或问题? 最佳答案 我会使用C++/C

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

记录--前端金额运算精度丢失问题及解决方案

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言前端开发中难免会遇到价格和金额计算的需求,这类需求所要计算的数值大多数情况下是要求精确到小数点后的多少位。但是因为JS语言本身的缺陷,在处理浮点数的运算时会出现一些奇怪的问题,导致计算不精确。本文尝试从现象入手,分析造成这一问题原因,并总结和整合一些通用的解决方案,以供大家参考。现象回顾下面的是JS进行数值运算过程中常见的问题,这个问题有个专业的名称叫精度丢失。在JavaScript中整数和浮点数都属于Number数据类型,所有的数字都是以64位浮点数形式存储,整数也是如此。所以我们在打印1.00这样的浮点数的结果是1而非1.00

c++ - 为什么自动返回类型在此示例中会丢失移动语义?

我在看videoNicolai说auto在这个例子中失去了移动语义:templateautocall(Callable&&op,Args&&...args){returnstd::invoke(std::forward(op),std::forward(args)...);}我在想:为什么会这样?做guaranteedRVO启动这个例子?如果是这样,担心搬家有什么意义? 最佳答案 我认为Nicolai可以将其表述得更好一些。当您通过auto返回时,您的函数返回一个值(将推导其类型)。如果std::invoke返回一个纯右值或一个xv

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++ - "signed char"和 "unsigned char"能否始终相互转换而不丢失数据?

在C++中,我们可以使用signedchar和unsignedchar,它们的大小相同但值的范围不同。在下面的代码中:signedcharsignedChar=-10;unsignedcharunsignedChar=static_cast(signedChar);signedChar=static_cast(unsignedChar);无论其原始值是多少,signedchar都会保留其值吗? 最佳答案 不,没有这样的保证。从signedchar到unsignedchar的转换是明确定义的,就像C++(和C)中的所有有符号到无符号整