草庐IT

DLL_THREAD_ATTACH

全部标签

C++ 通过引用 dll 中的函数传递 std::string

我在通过引用传递std::string以在dll中运行时遇到问题。这是函数调用:CAFCAFCArchive;std::stringsSSS=std::string("data\\gtasa.afc");AFCER_PRINT_RET(AFCArchive.OpenArchive(sSSS.c_str()));//AFCER_PRINT_RET(AFCArchive.OpenArchive(sSSS));//AFCER_PRINT_RET(AFCArchive.OpenArchive("data\\gtasa.afc"));这是函数头:#defineAFCLIBDLL_API__dec

c++ - 为什么我在编译 DLL 项目时收到错误 LNK1561 "Entry point must be defined"?

我尝试将一个非常简单的动态库项目编译为.dll文件。该项目的名称是“图书馆”。我正在使用VisualStudio2015,项目属性如下:DebugPropertiesReleaseProperties工程中只有两个文件:ClassA.h和ClassA.cpp。ClassA.h中的代码是:#ifndefCLASSA_H#defineCLASSA_Husingnamespacestd;#ifdefLIBRARY_EXPORTS#defineCLASSA_API__declspec(dllexport)#else#defineCLASSA_API__declspec(dllimport)#e

c# - 在 C# 项目中使用 C++ DLL

我有一个C++dll,它必须集成到C#项目中。我想我找到了正确的方法,但是调用dll会给我这个错误:System.BadImageFormatException:尝试加载格式不正确的程序。(HRESULT异常:0x8007000B)这是dll中的函数:externlongFARPASCALconvert(LPSTRfilename);这是我在C#中使用的代码namespaceTest{publicpartialclassForm1:Form{[DllImport("convert.dll",SetLastError=true)]staticexternInt32convert([Mar

c++ - 添加 #include <boost/thread/mutex.hpp> 会破坏我的 ActiveX 控件吗?

在ActiveX控件中使用boost::mutexheader是否存在已知问题?(boost版v1.39)如果我在VisualStudio2008中创建一个名为“DefaultOCXControl”的MFCActiveX控件项目,那么我可以构建它,该控件将自身注册为构建的一部分,并且可以像您期望的那样插入到ActiveX测试容器中。一切顺利。如果我再添加这一行:#include在我的DefaultOCXControlCtrl.h文件顶部并重建:构建结束时的注册步骤失败并显示:DebugAssertionFailed!Program:C:\Windows\system32\regsvr3

c# - 你将如何声明 DLL 导入签名?

这是UsingpHashfrom.NET的后续帖子您将如何在.NET中声明以下C++声明?intph_dct_imagehash(constchar*file,ulong64&hash);到目前为止我有[DllImport(@"pHash.dll")]publicstaticexternintph_dct_imagehash(stringfile,refulonghash);但是我现在遇到以下错误ulonghash1=0,hash2=0;stringfirstImage=@"C:\Users\dance2die\Pictures\2011-01-23\177.JPG";stringse

c++ - 如何将字符串从 DLL 返回到 Inno Setup?

我需要向调用InnoSetup脚本返回一个字符串值。问题是我找不到管理分配内存的方法。如果我在DLL端进行分配,那么在脚本端就没有任何东西可以解除分配。我不能使用输出参数,因为Pascal脚本中也没有分配函数。我该怎么办? 最佳答案 下面是一个示例代码,说明如何分配从DLL返回的字符串:[Code]FunctionGetClassNameA(hWnd:Integer;lpClassName:PChar;nMaxCount:Integer):Integer;External'GetClassNameA@User32.dllStdCal

【STM32&RT-Thread零基础入门】 5. 线程创建应用(线程创建、删除、初始化、脱离、启动、睡眠)

硬件:STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线文章目录前言一、线程管理接口介绍二、任务:使用多线程的方式同时实现led闪烁和按键控制喇叭(扫描法)1.RT-Thread相关接口函数(1)创建和删除线程(2)初始化和脱离线程(3)启动线程(4)线程睡眠2.代码实现(1)led灯闪烁功能模块实现(2)按键控制喇叭功能模块实现(3)main()程序设计3.程序测试总结前言本章主要讲线程的工作机制和管理方法,通过实例讲解如何使用多线程完成多任务开发。一、线程管理接口介绍RT-Thread用线程控制块来描述和管理一个线

c++ - 如何将使用默认参数的函数传递给 std::thread?

所以我有gcc版本4.8.1,g++版本4.6.4,使用标志:-std=c++0x和-pthread。我将我的问题简化为显示的代码,但仍然得到原始错误。我编译了下面的内容,但是当我取消注释线程“two”的两行时,我收到代码下方显示的错误消息#include#includeusingnamespacestd;voidprint_int(intx=7);voidprint_A(){cout我试图解析错误消息,但我仍然不知道发生了什么...Infileincludedfrom/usr/include/c++/4.6/thread:39:0,fromdef_params.cpp:2:/usr/

Qt静态链接库(.lib .a)、动态链接库(.dll)创建和使用教程

1库介绍先对库进行介绍,后对Qt静态链接库(.lib.a)、动态链接库(.dll)进行创建和使用的介绍!库是什么库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤:静态库是什么之所以成为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接

c++ - DLL 项目不生成 .exp 和 .lib 文件

所以,我有一个包含3个项目(2个DLL和1个.exe)的C++解决方案。这是基本的依赖表示:应用程序-->DLL2应用程序-->DLL1DLL2-->DLL1我遇到的问题是DLL2(在构建它时)确实会生成.dll但不会生成.lib和.exp我需要在应用程序项目中正确引用DLL2。但是,DLL1确实会生成这些文件,而且我已经将DLL1的设置与DLL2的设置进行了比较,但我找不到可能存在的差异。 最佳答案 对此的简单解释是您只是忘记导出任何内容。如果没有导出,链接器将不会创建.lib/.exp文件。您可以通过在DLL上运行dumpbin