草庐IT

AppInit_DLL

全部标签

c++ - 在 Visual Studio 2012 中为 C++ CLR 支持的 DLL 项目将 .NET Framework 4.5 降级到 4?

链接VisualC#.NETFramework4.0支持的项目时出现此错误,因为我添加了C++CLRDLL与4.5.NETFramework的引用。errorCS0246:Thetypeornamespacename'project'couldnotbefound(areyoumissingausingdirectiveoranassemblyreference?)因此,对于这个C++CLR支持的DLL项目,我如何在VisualStudio2012中将.NETFramework4.5降级到4.0?我以前见过这个是什么原因。对于我的C++,此链接可能有助于解决我的问题http://msd

c++ - 逆向工程 C++ DLL

我有一个最初用VS2005编写的小实用程序。我需要做一点小改动,但是其中一个dll的源代码在某处丢失了。是否有免费或价格合理的工具将dll反向工程回C++代码。 最佳答案 Hex-Raysdecompiler是一个很棒的工具,但代码将很难阅读,您将不得不花费大量时间对整个DLL进行逆向工程。 关于c++-逆向工程C++DLL,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6234

c# - 为 C# 包装 native DLL

我编写了一个C++DLL,现在我需要从托管应用程序调用native函数。导出的原生函数如下所示:extern"C"__declspec(dllexport)boolNativeMethod(char*param1,char*param2,char*result);因此,在C#中,我将调用该函数传递2个输入参数、1个输出参数,显然我将读取返回的bool值。我尝试以多种方式包装所有这些,但总是遇到PInvokeStackImbalance异常。我知道调用native函数的唯一方法是在.NET函数声明上应用CallingConvention=CallingConvention.Cdecl)。

c++ - 如何在 DLL 边界上公开 STL 列表?

我有一个DLL,它需要访问存储在主机应用程序的STL容器中的数据。因为C++没有标准的ABI,而且我想支持不同的编译器,所以应用程序和DLL之间的接口(interface)基本上必须保持纯旧数据。对于vector,这是相对简单的。您可以简单地返回vector的内存块,因为它保证是连续的://ToreturnvectordatavirtualvoidGetVectorData(constint*&ptr,size_t&count)const{if(!vec.empty())ptr=&(vec.front());count=vec.size();}现在DLL可以通过该接口(interfac

c# - 如何调用接受来自 C# 的 stringstream 类型参数的 C++ DLL 函数?

我想导入一个非托管C++DLL并调用一个将stringstream作为参数的函数。在C#中,没有stringstream类,所以谁能告诉我如何从C#程序中调用这样的函数? 最佳答案 句号,您不应该通过DLL公开模板化对象。模板化对象(例如std::中的几乎所有内容)都被内联。所以通过这种方式,您的DLL获得了它自己的私有(private)实现拷贝。调用您的DLL的模块还将获得其自己的stringstream私有(private)实现。在它们之间传递意味着您无意中将两个不相关的实现编织在一起。对于许多项目,如果您使用完全相同的buil

c++ - 卸载 DLL 时的内存泄漏是否会导致主机进程发生泄漏?

考虑这种情况:dll=LoadDLL()dll->do()...voiddo(){char*a=malloc(1024);}...UnloadDLL(dll);此时,在调用malloc()时分配的1k是否再次可供宿主进程使用?DLL静态链接到CRT。 最佳答案 操作系统跟踪的进程使用的内存适用于整个进程,而不是特定于DLL。内存由操作系统以block的形式提供给程序,称为堆堆管理器(malloc/new等)进一步划分块并将其分发给请求代码。只有在分配新堆时,操作系统才会检测到内存增加。当DLL静态链接到C运行时库(CRT)时,CRT

c++ - 如何在 C++ 中从 dll(dll 中的构造函数)创建一些类?

如何从dll(dll中的构造函数)创建一些类?(C++)或者如何从dll中动态加载类? 最佳答案 在构建DLL时,您需要使用__declspec(dllexport)关键字声明您的类。使用DLL时,类需要用__declspec(dllimport)声明:#ifdefCOMPILING_DLL#defineDECLSPEC_CLASS__declspec(dllexport)#else#defineDECLSPEC_CLASS__declspec(dllimport)#endifclassDECLSPEC_CLASSMyClass{.

c++ - 如何将 C++ 类导出为 dll?

这个问题在这里已经有了答案:ExportingaC++classfromaDLL(6个答案)关闭9年前。我有C#/Java背景,所以我想弄清楚如何创建一个行为类似于C#dll的C++dll。我已经尝试过__declspec(dllexport)和__declspec(dllimport),但我只设法让它在静态方法上工作。我确信这是由于我的理解有限。如何在C++中导出类(完整地包括私有(private)成员)并能够像在C#中那样在引用端实例化它们?一些指向在线资源/教程的指针也可以做到这一点。我开始使用MFCdll模板,老实说,我不知道它们中的90%是做什么用的,也不知道为什么我要从CW

c++ - 加载程序如何将 DLL 映射到进程地址空间

我很想知道加载程序如何将DLL映射到进程地址空间。loader是如何做到这一点的。高度赞赏示例。提前致谢。 最佳答案 好吧,我假设这里的事情是Windows方面的。加载PE文件时发生的事情是加载程序(包含在NTDLL中)将执行以下操作:使用DLL搜索语义(系统和补丁级别特定)定位每个DLL,众所周知的DLL可以免于此将文件映射到内存(MMF),其中页面是写时复制(CoW)遍历导入目录并在点1处(递归地)开始每个导入。解决重定位问题,大多数情况下这只是非常有限数量的实体,因为代码本身是位置无关代码(PIC)(IIRC)将EAT从RVA

c++ - 如何像 Delphi 应用程序一样创建独立的(没有 DLL 文件依赖项)C++Builder 控制台应用程序?

当我创建一个Delphi控制台应用程序时,我可以部署生成的EXE文件,而不必担心外部DLL文件。但是如果我创建非常简单的C++Builder(2007版)控制台应用程序(无VCL)EXE文件需要CC3280MT.dll文件才能运行。如何避免我的C++Builder控制台应用程序需要CC3280MT.dll文件?即使是这个简单的代码也会导致这种依赖:#include#pragmahdrstop#pragmaargsusedintmain(intargc,char*argv[]){cout 最佳答案 在项目选项中,取消选中链接器选项“动