草庐IT

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# - 你将如何声明 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

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

c++ - 什么是 "api-ms-win-*-*-lx-x-x.dll"伞形库?

我经常遇到长文件名的DLL,就这样。例如只有两个:"api-ms-win-appmodel-runtime-l1-1-1.dll"或"api-ms-win-appmodel-identity-l1-2-0.dll"。显然微软称它们为“umbrellalibraries”。我最初的理解是它们只是具有新文件名的新D​​LL,但后来我尝试搜索这些文件。好吧,我找不到它们作为磁盘上的物理文件...所以我很好奇,它们是磁盘上不存在的某种虚拟DLL文件名吗?WCHARbuff[MAX_PATH];buff[0]=0;GetSystemDirectory(buff,MAX_PATH);StringC

c# - C++ dll 返回的字符串在 C# 调用程序中已损坏,为什么?

我有一个调用C++DLL的C#应用。在C#中,我有如下代码:[DllImport(@"111.dll",CharSet=CharSet.Unicode)]publicexternstaticStringFunc1(Stringarg);......Stringarg="testtext";Stringretstring=Func1(arg);在CPP中,我定义的函数如下:extern"C"{__declspec(dllexport)LPWSTRFunc1(LPWSTRarg){....LPWSTRret1=L"1?2?3?4?5";LPWSTRret2=SomeActualFuncti

c++ - MSVCP110D.dll 和 Visual Studio 2013

我正在尝试运行我在VisualStudio2013中编译的程序。但是,我收到错误Theprogramcan'tstartbecauseMSVCP110D.dllismissingfromyourcomputer.Tryreinstallingtheprogramtofixthisproblem.这不是一个非常有用的错误。然而,在一些谷歌搜索之后,我发现它(显然)试图动态加载一个标准的c++库,为了解决这个问题,我需要指定/MT选项而不是/MD选项。这给我留下了一些问题:它到底在做什么?/MD与/MT相比有什么好处?我的意思是,它是默认选项肯定是有原因的...我将如何着手寻找.dll并让

c++ - 如何在 Delphi 中使用由 dll 导出的 C++ 类

有没有办法在Win32的Delphi中使用由win32dll导出的C++类?是否有其他方法来实现类似的东西(COM、.NET等)? 最佳答案 你不能导入一个类。您只能导入函数。RudyVelthuishaswrittenatlengthonthetopic.尽管您不能直接使用导出的C++类,但他描述了一些实现相同效果的技术:“扁平化”对象,因此在调用方不再有对象,只有一个指针连同其他参数一起传递给DLL,用于包装对象方法的一系列函数。编写包装器非常简单,尽管它可能很乏味。使用纯虚类。WindowsC++编译器和Delphi通常具有相