草庐IT

DLL_EXPORT

全部标签

c++ - 有没有人能够在使用共享 DLL 的 Windows 64 位应用程序上集成 tcmalloc?

我有一个64位VisualStudio2010(单线程)C++Windows应用程序,我试图将它与tcmalloc集成,但在使用任何动态链接的dll时遇到问题。我将tcmalloc链接为静态库。在应用程序开始使用我们共享的dll之一之前,tcmalloc工作得很好。我将解决方案构建为64位DEBUG应用程序。所有dll与CRT库的C/C++调试版本(MSVCP100D.dll和MVCR100D.dll)的链接。下面是失败的代码示例。tcmalloc被调用用于所有内存分配,但是当调用delete时应用程序崩溃。当我在主可执行文件中创建一个函数并将代码复制到那里时,完全相同的代码工作正常,

c++ - Excel VBA : "Run-time error ' 4 9': Bad DLL calling convention" calling C++ dll

我正在尝试从Excel-VBA调用C++DLL。我知道DLL函数正在执行,因为我插入了fputs()记录调用以跟踪执行情况,并且标记显示在我的日志文件中。问题是,每当DLL函数返回时,我都会收到错误49。这是VBA中的声明:PrivateDeclareFunctionInitMCRLib"MCRBoilerplate.dll"Alias"?initMCR@@YGXXZ"()这是C++中的声明__declspec(dllexport)void__stdcallinitMCR(){...}为什么我会收到此错误49行为,即使DLL调用似乎正常运行? 最佳答案

c++ - 在 visual studio 中构建 DLL 时使用静态库

我正在尝试使用依赖于OpenCV的VisualStudio12社区构建DLL。我想将OpenCV作为.lib文件包含在内,这样我就不必单独分发它,但我需要将我的文件构建为DLL。但我无法将VisualStudio配置为将库导入DLL。如果在我的项目->属性->配置属性->常规->配置类型,我选择“静态库(.lib)”并在:我的项目->属性->配置属性->VC++目录->库目录,我选择OpenCV.lib文件的路径,然后在我的项目->属性->配置属性->链接器->添加依赖项我添加了对每个.lib的引用,它起作用了。但是如果我更改配置类型做“动态库(.dll)”,VisualStudio告

c++ - Electron native 添加 : DLL initialization routine failed

我正在尝试将我的C++库作为native附加组件链接到我的Electron应用程序。我能够运行node-gyprebuild并生成一个成功的.node文件。但是,当我尝试从main.js调用它时,我收到一条错误消息:“一个动态链接库(DLL)初始化例程失败”。我的binding.gyp文件如下所示:{'targets':[{#Usualtargetname/sources,etc.'target_name':'myclass','sources':['myclass.cc','addon.cc'],'libraries':["../libs/api.lib","../libs/core

c++ - 如何通过引用从 MQL4 向 C++ DLL 传递参数

我正在尝试在MQL4中编写一个简单的程序,该程序通过引用将变量传递给C++DLL函数,并在MQL4中打印更新后的变量值。下面给出的是我的代码。动态链接库函数:voidTest(int*X){*X=6;}MQL4代码#import"Test.dll"voidTest(int&);#importvoidOnStart(){intA;Test(A);Alert(A);}但是我没有从变量A的C++函数中得到任何值。有人可以帮我解决我在这里做错的问题吗?提前致谢 最佳答案 让我们从DLL端开始:intTestMoreApproachesAtO

c++ - Windows DLL实际上是如何共享的?

通过检查我的Windows机器中的几个DLL(例如KERNEL32.DLL),我注意到它们的任何部分,甚至只读数据部分都没有设置IMAGE_SCN_MEM_SHARED标志。DLL是从.dll文件映射的,因此只有当您读取文件的一页时,它才会被复制到物理内存,但是,如果进程A和进程B都访问了kernel32.dll的同一页,那么该页面将在物理内存中存在两次。我要求最后声明的真实性。如果共享的.text或.rodata段,它们只会被复制到物理内存一次,即使启用了ASLR,因为ASLR所做的是在模块首次加载时随机化模块的基址(应用相应的重定位))但在系统重启之前加载此模块的下一个进程将在同一

c++ - Espeak SAPI/dll 在 Windows 上的使用?

问题:我正在尝试使用espeak文本转语音引擎。所以我让它在linux上运行得很好(下面的代码)。现在我也想将这个基本程序移植到Windows,但这几乎是不可能的...部分问题是Windowsdll只允许AUDIO_OUTPUT_SYNCHRONOUS,这意味着它需要一个回调,但我无法弄清楚如何从回调中播放音频...首先它崩溃了,然后我意识到,我需要一个回调函数,现在我在回调函数中获取了数据,但我不知道如何播放它...因为它既不是wav文件,也不像在Linux上那样自动播放。sourceforge网站没什么用,因为它基本上说使用SAPI版本,但是没有关于如何使用sapiespeakdl

c++ - 场景 : Global variables in DLL which is used by Multi-threaded Application

几个月前,我遇到了一个人(在orkut上)问的这个有趣的场景。虽然,我已经针对这个问题提出了一个“不可移植”的解决方案(已经用小代码对其进行了测试),但仍然想知道你们有什么要说的和建议的。假设,我创建了一个DLL,导出一些功能,用C++编写,用于单线程客户端。这个DLL声明了很多全局变量,一些可能是const变量(只读),其他的是可修改的。无论如何,后来情况发生了变化,现在我希望同一个DLL与多线程应用程序一起工作(无需修改DLL);这意味着,多个线程从DLL访问函数和全局变量,并修改它们……等等。所有这些都可能导致全局变量持有不一致的值。所以问题是,我们能否在客户端代码中做一些事情来

c# - 将字符串数组从 C# 传递到 C++ dll,然后再返回

我查看了googleverse和stackoverflow并看到了几个与此类似的问题,但我找到的答案没有一个对我有用。我是一名新成员,所以我不能对别人的问题的答案发表评论以要求澄清,所以我不得不求助于自己提问。好的,所以我正在尝试将字符串数组从C#应用程序传递到C++dll,然后在另一个C#应用程序中获取该信息。我相信我正在正确地传递给C++,但我无法从dll中获取正确的字符串。我像这样传递给C++:[DllImport("KinectPlugins.dll",CallingConvention=CallingConvention.Cdecl)]privatestaticexternv

C++ 从子目录加载 DLL?

我是C++的“隐藏/暗处”的新手,我想知道如何从不同的目录或当前可执行文件运行的目录中的子目录加载.dll文件例如:./MyAppDirectory/MyApp.exe/SomeDLL.dll/AnotherDLL.dll/SubDirectory/SomeDLL2.dll/AnotherDLL2.dll/YetAnotherDLL.dll/...所以“MyApp.exe”自动从它的根文件夹“MyAppDirectory”加载“SomeDLL.dll”和“AnotherDLL.dll”,但是我也希望能够加载“SomeDLL2.dll”,“AnotherDLL2.dll”,“MyAppD