草庐IT

DLL_THREAD_ATTACH

全部标签

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。

c++ - 链接到 boost_thread 的问题

我正在尝试将xubuntu上的boost1.47与gcc4.6和glibc2.13链接起来。到目前为止,我无法编译以下简单程序main.cpp:#include#include#includeintmain(){size_tn_threads=boost::thread::hardware_concurrency();return0;}当我编译时:g++-lboost_thread-lboost_regex-omcmain.cpp-static-lpthread/usr/local/lib/libboost_regex.a/usr/local/lib/libboost_thread.a

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++ - 指向 std::thread 的共享指针是一种不好的做法吗?

使用std::shared_ptr有意义吗?逻辑很简单:如果不需要线程,则删除它,如果需要新线程-重新分配它。有什么方法可以将这个概念与线程池进行比较吗?我确实知道我系统中线程的确切数量(我开发了图像处理算法,我想给“算法”类的每个子级一个单独的线程(也许让它私有(private),然后不需要shared_ptr),该算法将在何处运行,如果未提供图像,则将此私有(private)线程闲置。这是一个糟糕的概念吗? 最佳答案 您可能错过了事实std::thread析构函数不会终止线程。正如评论中已经提到的,ifdetachorjoinw

c++ - std::this_thread::sleep_for(2s) 中的 s 是什么?

我找到了std::this_thread::sleep_for可以处理时间单位s。std::this_thread::sleep_for(2s);但是我不知道2s中的s是什么。 最佳答案 Whatissinstd::this_thread::sleep_for(2s)?s是一个用户定义的文字使得2schrono::second类型的文字值.内置文字您可能熟悉integerliterals和floatingliterals;这些是内置后缀:+--------+---------+---------------+|Suffix|Exam

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

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