草庐IT

dll丢失

全部标签

c++ - CMake 生成的 DLL 和 Curiously Recurring 模板 (C++) 的不正确行为

我在Windows上遇到了CMake生成的DLL文件的令人困惑的问题。在我的库中,我使用CuriouslyRecurringTemplatePattern为某些类提供唯一的ID号://da/Attribute.h:#ifndefDA_ATTRIBUTE_H#defineDA_ATTRIBUTE_Hnamespaceda{typedefunsignedintAttributeId;classAttributeBase{public:virtualAttributeIdgetTypeId()const=0;protected:/**StaticIDcounter.Everyclasstha

如何保证消息队列不丢失消息(以kafka为例)

目录一、引言二.持久化存储2.1持久化存储原理:2.2使用示例:1.安装Kafka:2.生产者代码:3.消费者代码:三.消息确认机制3.1消息确认机制原理:3.2使用示例:1.生产者代码:2.消费者代码:四.事务机制4.1事务机制原理:4.2使用示例:1.生产者代码:2.消费者代码:五.数据备份与复制5.1数据备份与复制原理5.2使用示例:1.KafkaBroker配置:2.生产者代码3.消费者代码六.消息过期机制总结一、引言消息队列(MessageQueue)是一种用于在不同组件、服务或系统之间传递消息的通信方式。在分布式系统中,消息队列起到了缓冲和解耦的作用,但在使用过程中,如何保证消息不

c++ - 创建 Dll 文件

我即将使用VisualStudio创建一个dll项目。后来它的机制是什么?最后是否会生成一个dll文件,以后可以在其他项目中使用? 最佳答案 VS将为您生成两个文件:一个.lib和一个.dll。原则上,.dll就足够了。你可以调用LoadLibrary在文件上并直接从.dll文件中检索任何导出的函数。这里的问题是编译器不知道dll提供了哪些功能,所以你必须做GetProcAddress。调用您要使用的每个函数。由于这非常不方便,VS还生成了.lib文件,它为您解决了整个麻烦。只需将您的可执行文件静态链接到.lib,它将在运行时为您处

c++ - Visual Studio 2013 dll 导出链接错误 (LNK2019/LNK1120)

我知道之前有人问过类似的问题,但看起来在类导出方面与简单函数有所不同......我已经检查了所有这些解决方案,检查了所有建议,但看起来我仍然是遗漏了一些东西......发生了什么:我有一个用VisualStudio2013编写的主C++项目,我想添加一个包含各种实用程序的dll库。我创建了一个虚拟的,基本上没有任何功能,但它无法编译:2>TestSvc_i.c2>TestSvc.obj:errorLNK2019:unresolvedexternalsymbol"__declspec(dllimport)public:__thiscallCUtils::CUtils(void)"(__i

python - 在 python 中使用 cpp 项目 dll 和 .lib 文件

因此,使用标准的cpp编译器,我的应用程序链接到.lib文件,然后在运行时,只要dll与可执行文件位于同一文件夹中,一切都神奇地工作..但是在python中,.lib文件起什么作用呢?我知道您可以通过使用ctypes来使用dll的功能fromctypesimport*dllHandle=cdll.LoadLibrary("C:\\filename.dll")orctypes.WinDLL("C:\\filename.dll")但是不使用.lib文件会丢失什么?如果不需要,为什么在cpp项目中需要它? 最佳答案 如果在test.dll

C++ "error: "对象在引用中丢失...”取决于 gcc 版本

我在使用一个gcc版本(4.3.2)时遇到编译错误,而使用较新版本的gcc可以毫无怨言地编译相同的代码,例如4.5.2.下面的例子说明了这个问题:classBase{protected:intmember;};templateclassA:publicBase{};templateclassC:publicA{C(){Base::member=1;}};intmain(){}对于4.3.2,我得到:test.cpp:Inconstructor'C::C()':test.cpp:4:error:objectmissinginreferenceto'Base::member'test.cp

c++ - C4244 : '+=' : conversion from 'std::streamsize' to 'size_t' , 可能丢失数据

我已将我的VC++项目从VS2008迁移到VS2013并收到一些警告,例如:C4244:'+=':conversionfrom'std::streamsize'to'size_t',possiblelossofdata.如何解决这些类型的警告? 最佳答案 在MSVC2013中std::streamsize是:typedef_Longlongstreamsize;typedef_LONGLONG_Longlong;#define_LONGLONG__int64size_t是:typedefunsigned__int64size_t;因

c++ - 将结构传递给 dll

我想将几个数据传递给Dll函数,所以我正在考虑创建一个结构并通过如下结构将它们传递给Dll函数:structoptions{intop1,intop2,intop3,char*op4,...char*op10}voiddllFunction(optionsmyOptions)无论开发工具是什么,dll都应该以在Windows平台上工作的方式实现,我想知道:这样发送数据有效吗?请注意,结构成员都是基本的c类型(int、float、double、...)。为什么我担心它?如您所知,不同的编译器以不同的方式实现std类,因此您不能通过dll边界传递std类,但我不确定是否所有编译器都以相同的

c++ - 读取dll文件中的文本文件

设置MicrosoftVisualStudioProfessional2015,在Windows10Pro上运行Unity5.3.1f1(x64)该项目建立在Unity在其site.上提供的示例项目之上。该项目可以找到here.需要做的事情我正在考虑创建一个用于Unity的opengl插件(以dll的形式)。在他们的示例代码中,vertex和fragment着色器在代码中是硬编码的,如下所示:#defineVPROG_SRC(ver,attr,varying)\ver\attr"highpvec3pos;\n"\attr"lowpvec4color;\n"\"\n"\varying"l

c++ - 使用 lexical_cast<float>(string) 时会丢失精度

当使用boost::lexical_cast(我在VS2013上使用boost版本1.58)时,我无法获得字符串中指定的确切值,即使它可以用float表示:std::wstringt=L"91.25";floatr;r=boost::lexical_cast(t);r是91.249992(0x42B67FFF)而不是91.250000(0x42b68000)以前版本的boost以预期的方式运行。我是否缺少精确设置? 最佳答案 事实证明这与boost无关。这似乎是VisualStudio和VS2013的问题。#include#incl