草庐IT

dll丢失

全部标签

c++ - 在 .NET 中捕获非托管 dll 异常

我正在使用一个带有抛出std::exception函数的非托管DLL。我正在使用.NETDLL包装器,因此可以分发它以在.NET程序中使用。我希望能够从native异常中捕获消息,但我得到的只是System.Runtime.InteropServices.SEHException("Externalcomponenthasthrownanexception.")有什么方法可以传播异常详细信息吗?也许我应该从nativeDLL导出自定义异常?我该怎么做?谢谢nativeDLL:__declspec(dllexport)void__stdcallW32DLLFunc(intparam){i

c++ - 使用 std::string 在 DLL 中创建类。 C4251 警告

我想在DLL中实现一个简单的类,例如:classMY_EXPORT_IMPORTMyClass{public://std::stringanyPublicStr;//seepoint3protected:std::stringanyStr;};问题是VisualC++编译器(在本例中为2013)抛出以下警告:C:...MyClass.hpp:X:warning:C4251:'MyClass::postfix':class'std::basic_string,std::allocator>'needstohavedll-interfacetobeusedbyclientsofstruct

c++ - 使用 clang AST 解析器忽略丢失的 header

我在Windows上,使用MSVC来编译我的项目,但我需要clang来使用它简洁的AST解析器,它允许我编写一个小代码生成器。问题是,clang无法解析MSVCheader(一个众所周知且可以理解的问题)。我尝试了两种选择:我包含MSVCheader文件夹,解析我的代码中包含的内置header最终会在某些时候导致fatalerror,阻止我正确解析我想要的部分。我之前所做的只是不提供任何内置header并转发声明我需要的类型。它工作正常,不知何故它不再适用于最新的Clang。我真的不知道关于丢失header的解析器策略是否发生了变化,但它每次都会导致完全失败,如包含在内,并没有太多被解

c++ - 如何使用 MinGW 将符号正确导出到 Windows DLL 中?

我正在尝试使用MinGW创建一个具有一个公开函数的C++库。我想我已经读够了tutorials,环顾互联网,但似乎没有任何效果,错误总是一样的。未定义的函数引用。这是库的头文件(findPoints.h):#ifndefFIND_POINTS_H#defineFIND_POINTS_H#ifdefBUILDING_FIND_POINTS_DLL#defineFIND_POINTS_DLL_PREFIX__declspec(dllexport)#else#defineFIND_POINTS_DLL_PREFIX__declspec(dllimport)#endif#ifdef__cplu

c++ - 在共享对象/DLL 中使用模板化类和函数

我正在从事一个跨越许多共享库的规模相当大的项目。我们也非常依赖STL、Boost和我们自己的模板类和函数。许多导出的类包含模板成员,导出的函数包含模板参数。这是我如何导出库的精简示例:#ifdefined(_MSC_VER)&&defined(_DLL)//Microsoft#defineEXPORT__declspec(dllexport)#defineIMPORT__declspec(dllimport)#elifdefined(_GCC)//GCC#defineEXPORT__attribute__((visibility("default")))#defineIMPORT#el

c# - 从 C# 使用 DirectX DLL (C++)

我有一个使用DirectX的nativeC++DLL,我希望能够通过C#使用它来创建内容创建工具。添加COM似乎需要相当大的努力。P/Invoke是否可以用于维护使用多态性的类,还是需要我包装大部分代码以方便使用P/Invoke?有更好的解决方案吗?或者我是否应该考虑使用Qt用C++编写工具? 最佳答案 在进行C#到C++互操作时,我始终觉得C++/CLI始终是最佳选择。您可以轻松地为非托管库创建精简包装器,它看起来与您的C#代码的托管库完全一样。它还可以让您更好地控制编码和固定的执行方式。我相信有一些方法可以自动生成C++/CLI

c++ - 找到丢失的数字

如果我们有一个包含最多N个数字(NN=515323Output:15423在ex中,数字4是缺失的一个,有2个3,所以我们用4替换了第一个,现在数组完整了-所有数字到5都在那里。是否有任何简单的算法可以做到这一点? 最佳答案 由于N很小,如果i出现k次,则可以使用F[i]=k。intF[10];//makesuretoinitializeitto0for(inti=0;i现在,要替换重复项,请遍历您的数字数组,如果当前数字出现多次,则减少其计数并将其替换为出现0次的数字并增加该数字的计数。如果您保留一个根本不出现的数字列表,则可以保

c++ - 编写加载 msvcr80.dll 并公开 free() 函数的 DLL

我有一个依赖于MSVCR80并分配我需要清理的资源的第三方DLL。该库不公开用于执行此操作的免费函数。相反,我需要加载相同的运行时库并手动调用free函数。作为解决方法,我正在尝试编写一个“包装器”DLL,它加载正确的运行时并公开free函数。此DLL是使用VisualStudio2010创建的,并且依赖于单独的运行时库。执行LoadLibrary("msvcr80.dll")失败并出现错误R6034,我猜这是因为明显的问题。甚至可以使用LoadLibrary加载msvcr80.dll吗?我是否需要创建一个list,将其嵌入DLL并将msvcr80.dll存储在与我的包装器DLL相同的

c++ - 在 dll 边界上公开 std::vector - 编译器独立性的最佳实践

在DLL边界上暴露STL容器不是一个好主意,而且通常是不可能的(参见thisanswerforwhy和thisone关于在dll边界上暴露std::list)。我需要能够在使用不同(VC08/VC10+)编译器编译的DLL和EXE之间传递数据;thisQ只处理相同的一切。暴露它们的最佳方式是什么?vector与列表有点不同,因为保证内存是连续的,所以如果我只需要一个double的constvector,我可以只提供指向block的开始和结束指针到dll中的函数吗?dll还需要返回一些结构,例如vector数组。我想知道包含开始和结束指针的结构:templatestructvecWrap

c# - 如何在C#中使用C++ DLL导出的接口(interface)指针

我有一个用C++编写的DLL,它导出一个函数CreateRisk。该函数返回一个接口(interface)指针,如下所示:extern"C"{__declspec(dllexport)IRisk*__stdcallCreateRisk(){returnnewRisk();}}IRisk派生自IUnknown并具有自定义方法Calculate:classIRisk:publicIUnknown{public:virtualint__stdcallCalculate(inti,doubles)=0;};类Risk实现IRisk接口(interface)(这里省略实现)。我想要的是在C#中调