草庐IT

DLL_EXPORT

全部标签

c# - 从 C# 引用 64 位 dll 时应用程序退出(无异常)

我已经compiledlzo2.dll64bit现在希望在C#程序中使用它:我正在使用以下类进行测试(类似的代码适用于32位lzo.dll):[DllImport("lzo2.dll")]privatestaticexternstringlzo_version_string();staticvoidMain(string[]args){try{if(Environment.Is64BitProcess){Console.WriteLine(lzo_version_string());//applicationexitshere,noexceptionscaught}}catch(Exc

c++ - 如何使用 Visual Studio 在 dll 导出类中使用唯一指针 vector

一个简单的例子class__declspec(dllexport)A{public:vector>v;};VS2013编译错误unique_ptr的已删除复制构造函数.如果我删除__declspec(dllexport),没事。如果我只使用unique_ptrv,也很好。这是编译器错误吗?有什么办法可以解决吗?谢谢。您可以在http://webcompiler.cloudapp.net/上试用完整代码如下#include#include#includeusingnamespacestd;class__declspec(dllexport)A{public:vector>v;};intm

c++ - 从 32 位进程调用 64 位 dll 上的 LoadLibrary

我有一个32位的exe,检测到操作系统是64位的,需要动态加载一个64位的dll。这可以通过LoadLibrary实现吗?如果没有,是否有其他方法可以实现相同的目标? 最佳答案 如前所述,32位代码无法在同一进程中加载​​64位代码。您必须将其加载到不同的进程中(CreateProcess()?)并使用IPC进行协调。 关于c++-从32位进程调用64位dll上的LoadLibrary,我们在StackOverflow上找到一个类似的问题: https://s

c# - 对 DLL 入口点感到困惑(入口点未找到异常)

我正在努力学习如何在C#中使用DLL。我有一个非常简单的DLL,仅用于测试基础知识。//MainForm.csusingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.InteropServices;namespaceDLL_Test{publicpartialclassF

c++ - VS2010 : "Cannot find the resource compiler DLL. Please make sure the path is correct."

我一直在关注theForger'swin32APItutorial,然后我决定打开menu_one.rc文件以从VS2010中查看其内容,但我收到此错误:我已经仔细检查了这两个位置,但实际上这两个文件都不存在。我仅有的rcdll.dll拷贝位于:C:\ProgramFiles(x86)\MicrosoftSDKs\Windows\v7.0A\Bin\rcdll.dllandC:\ProgramFiles(x86)\MicrosoftSDKs\Windows\v7.0A\Bin\x64\rcdll.dll我试过做repairinstalloftheWindowsSDK,但这并没有解决问题

c++ - C++可以从DLL中导出类吗

我想知道class的导出(VC++中的__declspec(dllexport))是否是一种标准(ANSI、ISO、...)我想知道是否有人已经尝试使用英特尔C++编译器和gcc(Windows上的mingw)做同样的事情,以及是否可以混合从不同编译器生成的dll(我真的怀疑这是否可能)谢谢 最佳答案 不,__declspec是特定于VC++的。VC++需要它的原因之一是默认情况下,DLL不会在DLL外部公开符号,除非明确要求这样做。在Posix上,共享对象会公开其所有(非静态)符号,除非明确告知要隐藏它们。更新根据您希望使代码可移

c++ - 编译器之间的 DLL 兼容性

有什么方法可以使使用不同编译器构建的c++dll相互兼容吗?这些类可以有用于创建和销毁的工厂方法,因此每个编译器都可以使用自己的新/删除(因为不同的运行时有自己的堆)。我尝试了以下代码,但它在第一个成员方法上崩溃了:接口(interface).h#pragmaonceclassIRefCounted{public:virtual~IRefCounted(){}virtualvoidAddRef()=0;virtualvoidRelease()=0;};classIClass:publicIRefCounted{public:virtual~IClass(){}virtualvoidPr

c++ - 带有 DLL 解决方案的预编译 header 。无法打开预编译头文件

当此解决方案使用.lib文件而不是.dll文件时,此方法没有错误。除了一个当前使用预编译header的项目外,我拥有所有项目,没有错误。预编译头称为“LudoGlobal.h”。我试图将最后一个项目链接到这个预编译的头文件(它存在于一个单独的“核心”项目中),但我收到以下错误:Error4fatalerrorC1083:Cannotopenprecompiledheaderfile:'....\Output\LudoSound\Debug\LudoSound.pch':Nosuchfileordirectoryludosoundmanager.cpp1对于每个.cpp文件。为什么是这样

c++ - 释放在不同 DLL 中分配的内存

我有一个使用DLL文件的EXE文件,该DLL文件正在使用另一个DLL文件。出现了这种情况:在DLL文件1中:classabc{staticboolFindSubFolders(conststd::string&sFolderToCheck,std::vector&vecSubFoldersFound);}在DLL文件2中:voidaFunction(){std::vectorfolders;std::stringsLocation;...abc::FindSubFolders(sLocation,folders)}在Release模式下,一切正常。但是在Debug模式下,我在文件夹ve

.net - 从 VB.net 调用时 native c++ dll 运行速度比从 native .exe 调用时运行速度慢

我在nativeC++(VisualC++2010)中有一些代码来处理一些GB的文件。我将其编译为.exe,大约需要8分钟。但我需要从VisualBasic.net界面调用它,所以我将它放在一个.dll中并创建了一个c++/cli包装器类以在nativedll中调用我的代码。托管代码和nativedll之间的唯一交互是调用启动处理的函数。令我惊讶的是,处理时间几乎是.exe方式的两倍。我不是真正的VB.net专家,所以也许有一些我不知道的设置或要看的东西。欢迎任何想法。提前致谢。 最佳答案 几个想法:也许您使用Release配置构建