草庐IT

DLL_THREAD_ATTACH

全部标签

C++:具有 `std::lock_guard` 的互斥量是否足以同步两个 `std::thread`?

我的问题是基于下面的C++代码示例#include#include#include#includeclassClassUtility{public:ClassUtility(){}~ClassUtility(){}voiddo_something(){std::coutlock(g_mutex);std::coutlock(g_mutex);std::cout如果需要,这更像是一个问题,目的是让我的理解更清楚,并获取std::condition_variable的示例用法。我有2个C++std::thread,它们在main方法中启动。它是osx上的控制台应用程序。所以使用clang编

c# - 托管 .NET 等同于 WinBase 的 CreateFile 和 WriteFile (kernel32.dll)

我正在使用旧文件格式。该文件是使用使用WinBase.hCreateFile()和WriteFile()函数(在kernel32.dll中找到)的非托管C++创建的。我一直在使用P/Invoke互操作来访问这些native函数,如下所示:[DllImport("kernel32.dll")]publicstaticexternboolWriteFile(IntPtrhFile,byte[]lpBuffer,uintnNumberOfBytesToWrite,outuintlpNumberOfBytesWritten,[In]refNativeOverlappedlpOverlapped

c# - 一个解决方案中的非托管 DLL 项目和托管 WinForms 应用程序

我使用的是VisualStudio2008Professional,我需要创建包含两个项目的解决方案。第一个项目是托管WinFormsC#项目,第二个是非托管DLLC++项目。我在VS2008中创建了它们,在非托管DLL项目中我导出了返回一些int的简单函数。在托管WinForms项目中,我以通常的方式导入DLL并尝试在标签中打印返回值:[DllImport("DllProj.dll",EntryPoint="GetSomeInt",SetLastError=true)]privatestaticexternintGetSomeInt();但是当我构建解决方案并运行时,我得到了DllN

c++ - 如何找出我的 DLL 增长如此之多的原因

我一直在处理的一个DLL最近变大了很多。是否有任何工具可以告诉我对此负责的是什么?例如,它是实例化次数过多的模板,还是第3方库,或者是boost?我正在寻找一种关注大小而不是性能的分析器。 最佳答案 您是在谈论DLL的字节大小吗?尝试使用dumpbin实用程序。这可以向您显示DLL中的内容。/ARCHIVEMEMBERS应该向您展示各个对象模块。http://support.microsoft.com/kb/177429 关于c++-如何找出我的DLL增长如此之多的原因,我们在Stack

c++ - 如何导出类函数,而不是 DLL 中的整个类

我开发了一个Win32DLL,在下面提供了详细信息,并想为函数Connnect和LogOut创建一个CLI/C++包装器。我知道可以从DLL导出整个类和函数。classCClientLib{public:CClientLib(void);//TODO:addyourmethodshere.__declspec(dllexport)boolConnect(char*strAccountUID,char*strAccountPWD);__declspec(dllexport)voidLogOut();private:Account::RefUserAccount;voidset_Activ

c++ - 为什么 Windows 10 中 kernel32.dll 上的 GetFileVersionInfo 返回版本 6.2?

我正在尝试检索kernel32.dll版本以执行Windows版本检查。然而,出于某种原因,即使kernel32.dll的版本(如文件属性中所示)为10.0.10586.0,返回的版本为:6.2.10586.0怎么会呢?DWORDdwDummy;DWORDdwFVISize=GetFileVersionInfoSize(lpszFilePath,&dwDummy);LPBYTElpVersionInfo=newBYTE[dwFVISize];if(GetFileVersionInfo(lpszFilePath,0,dwFVISize,lpVersionInfo)==0){returnF

c++ - 是否有真正的 64 位版本的 msvcr80.dll?如果不是,为什么不呢?

我已阅读链接,该链接回答了是否有64位版本的VisualStudios(VisualStudio64bit?)的问题。简单的答案是否,但32位VisualStudio开发环境可以生成64位可执行文件。问题:1)是否有64位版本的Microsoft可再发行库msvcr80.dll?我已经在我的Windows764位机器上安装了可再发行组件包,并且在winsxs子目录中找到的所有拷贝(总共7个)在它们的标题部分中表明它们是32位的。2)这不是真的吗:a)32位可执行文件无法加载64位dll?b)64位可执行文件无法加载32位dll?c)如果msvcr80.dll的所有版本都是真实的)32位

c++ - Thread Sanitizer 是否可用?

我想尝试线程清洁剂(http://code.google.com/p/data-race-test/wiki/ThreadSanitizer#Using_ThreadSanitizer)所以我做了一个简单的程序:#include#include#include#include#include#includeusingnamespacestd;intviolated=0;mutexmtx;voidviolator(){lock_guardlg(mtx);violated++;}intmain(){threadt1(violator);t1.join();threadt2(violator

c++ - 为什么从 DLL 内部分配的内存在 FreeLibrary() 之后变得无效?

我今天遇到了这个错误,原来是因为我在调用FreeLibrary()后使用了一个字符串从我的DLL中分配。这是一个重现崩溃的简单示例。这进入DLL:voiddllFunc(char**output){*output=strdup("Hello");//strdupusesmalloc}这是在加载DLL的EXE中:voidexeFunc(){char*output;dllFunc(&output);std::strings1=output;//Thissucceeds.FreeLibrary(dll);std::strings2=output;//Thiscrasheswithaccess

c++ - Win32。在 dll 中启用视觉样式

我没有C++和WinAPI方面的经验,如果这个问题是新问题,我很抱歉。我有DLL,我可以在其中创建一些组件,例如MessageBox。我添加了pragma注释以启用视觉样式,但它不起作用(我从这个答案中知道它不应该:windows7styleforcomboboxoninternetexplorertoolbar,how?Dll代码(省略export等):#include"stdafx.h"#include"my-dll.h"#include#pragmacomment(linker,"\"/manifestdependency:type='win32'name='Microsoft.