草庐IT

DLL_EXPORT

全部标签

c++ - 从 C 中用 C++ 开发的 DLL 调用函数

dll中的函数原型(prototype)如下voidFoo(intarg1,int&arg2);问题是,如何在C中声明函数原型(prototype)?声明是否合法?voidFoo(int,int*); 最佳答案 Isthedeclarationlegal?是的,但它没有声明相同的功能。如果您需要CAPI,则不能使用引用。坚持指针,并确保该函数具有C链接:extern"C"voidFoo(int,int*){//Functionbody}如果您无法修改DLL代码,则需要为其编写一个C++包装器,以公开适当的CAPI。

es.dll文件丢失导致程序无法运行问题

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个es.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现es.dll丢失要怎么解决?一、手动从网站下载单个dll文件1、从下面列表下载es.dll文件32/64位文件:es.dll2、将下载的文件放入到你要运行的软件或者游戏的安装所在文件

.net - 从非托管 C++ 动态加载混合模式 C++/CLI .dll(和依赖项)

我有一个托管C++程序集,我正在通过标准LoadLibrary()调用在非托管C++应用程序中动态加载。托管C++程序集依赖于多个托管(C#)程序集。一切正常,直到我将所有托管程序集移动到非托管应用程序的子目录中。举例说明:托管C++.dll(MyCoolDll.dll)依赖于DotNetDll1.dll依赖于DotNetDll2.dll非托管C++应用(MyCoolApp.exe)通过LoadLibrary("MyCoolDll.dll")加载MyCoolDll.dll这工作正常,直到我将MyCoolDll.dll、DotNetDll1.dll和DotNetDll2.dll移动到/s

c# - 如果一个应用程序中的多个线程调用单个 DLL 会发生什么

我想知道当一个应用程序中的三个线程(几乎)同时从DLL调用一个静态方法时会发生什么。是否为每个线程加载了3个DLL实例,或者其他线程是否仅在第一个线程使用DLL静态方法完成后才能访问DLL(即,每个线程在轮到它时都可以访问DLL? 最佳答案 Arethere3instancesoftheDLLloaded,oneforeachthread?没有。DLL通常每个进程加载一次。(这里有一些微妙的问题;如果您使用Load和LoadFrom,同一个程序集可能会被加载两次。但这种情况很少见,并且没有任何影响与线程有关。)Dothesecond

c++ - MSVCP110.dll 丢失

我正在编写一个Sketchupruby​​插件,它调用一个使用VisualStudios2012版本11.0.51106.01构建的外部C++应用程序。另一台尝试使用该插件的机器收到有关缺少MSVCP110.dll的错误。他们已经尝试安装vcredist,但没有解决问题。有谁知道如何解决这个问题? 最佳答案 您需要安装正确的RedistributablePackage来自微软。请注意,您不能只使用其中的任何一个,您需要选择与您的特定版本的VisualStudio配套的那个。例如,该链接适用于VS2012SP1。如果您有其他版本,则需

c++ - cc1.exe 系统错误 - 缺少 libwinpthread-1.dll - 但它不是

我最近从Sourceforge下载了MinGW-w64到我的外部硬盘驱动器上,所有文件都位于:E:\mingw-w64\x86_64-4.9.2-posix-seh-rt_v3-rev1\mingw64\bin当我尝试在Windows8.1上使用gcc编译我的第一个“HelloWorld”程序时,我收到cc1.exe系统错误,它告诉我Theprogramcan'tstartbecauselibwinpthread-1.dllismissing.Tryreinstallingtheprogramtofixtheproblem.然而,libwinpthread-1.dll(它的全部54,7

c# - 如何使用命名管道在 C++ .dll 和 C# 应用程序之间发送消息?

我正在制作一个用C++编写的注入(inject).dll,我想使用命名管道与C#应用程序通信。现在,我在C#应用程序中使用内置的System.IO.Pipe.net类,并且在C++中使用常规函数。我在C++方面没有太多经验(阅读:这是我的第一个C++代码..),但我在C#方面很有经验。似乎与服务器和客户端的连接正常,唯一的问题是消息没有被发送。我尝试将.dll作为服务器,将C#应用程序作为服务器,将管道方向设为InOut(双工),但似乎都不起作用。当我尝试使.dll成为向C#应用程序发送消息的服务器时,我使用的代码如下:DWORDServerCreate()//functiontocr

c++ - 在注入(inject)的 DLL 中调用函数

我想在我创建的注入(inject)DLL的远程进程中调用一个函数。我已经成功地将我的DLL注入(inject):CreateRemoteThread(pHandle,NULL,0,(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("kernel32"),"LoadLibraryA"),pLibRemote,0,NULL);DllMain被执行,DLL以待机模式运行。我想做的是以某种方式调用远程加载的DLL以完成一些工作。我试过像这样导出函数:extern"C"__declspec(dllexport)voidMyFunc(vo

c++ - 缺少 MSVCP100D.dll

当我尝试调试我的C++应用程序时出现错误Theprogramcan'tstartbecauseMSVCP100D.dllismissingfromyourcomputer.Tryreinstallingtheprogramtofixthisproblem.我在这里找到了一个有类似问题的人:RemotedebuggingC++ontheWindowsServer2008platformwithVS2010;MSVCP100D.dllmissing但是,当我转到解决方案属性时,那里给出的解决方案似乎没有出现。重新安装VisualStudio会解决这个问题吗? 最

c++ - COM 初始化和在 Win32 C++ DLL 中的使用

我正在编写一个使用COM查询WMI的Win32C++DLL。如何以编程方式确定COM是否已初始化?谢谢。 最佳答案 MarkRansom是对的直接、干净和简单的解决方案是要求调用者对COM进行初始化。丑陋的骇客您可以尝试第一次调用-可能是CoCreateInstance,如果它返回CO_E_NOTINITIALIZED,请自己运行CoInitialize(在这种情况下不要忘记取消初始化)但是,从DLL将CoInitialize“注入(inject)”到调用者线程中仍然存在问题。所以有一个清洁溶液让DLL创建一个工作线程(这意味着DL