Articles of c + +

为什么_CrtSetDumpClient不工作?

我正在使用Visual Studio Express 2013 for Windows Desktop用C编写的Windows命令行程序。 当在debugging模式下编译时,我真的很喜欢我的程序检测内存泄漏,并在标准错误或标准输出上打印它们,所以它们在我的面前。 通过调用_CrtDumpMemoryLeaks ,我可以得到内存泄漏信息打印出来的Visual Studio中的debugging输出(您可以在输出窗格中find)。 基于MSDN文档,我认为我可以添加一个调用_CrtSetDumpClient为了获得访问被转储的数据,然后打印到stderr。 这里是我用来testing这个问题的代码: #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <stdio.h> #include <crtdbg.h> void dumpClient(void * userPortion, size_t blockSize) { printf("memory leak: %d\n", blockSize); } int main(int argc, char ** argv) { printf("hello\n"); _CrtSetDumpClient(&dumpClient); malloc(44); _CrtDumpMemoryLeaks(); return 0; } 我在Visual Studio中创build了一个新的Visual C ++ Win32控制台应用程序项目,将此代码粘贴到项目中,禁用了预编译头文件,确保IDE处于debugging模式并生成。 如果我按F5(开始debugging命令)运行它,那么我可以在Visual Studio的debugging窗口中看到以下输出,这是很好的: Detected […]

JNA简单的函数调用在Linux(x64)上工作,但不能在windows(x86)上工作

我想从Java运行下面的C函数使用JNA,但我得到一个错误(无效的内存访问)在x86窗口(DLL),但不是在x64 Linux(.SO)。 cfunction char* testcopy(char* out,char* in) { strcpy(out,in); free(in); return out; }; Ctesting:在两个平台(Eclipse CDT / MVC ++) 当通过linux共享库或者windows dll暴露函数并直接在C中调用的时候,结果是OK的。 … char out[10]; char* res; char* in = (char*)malloc(3*sizeof(char)); strcpy(in,"ab"); res = testcopy(out,in); fprintf(stdout,"out: %s\n",out); fprintf(stdout,"res: %s\n",res); return 0; 或者使用DLL: … HINSTANCE hInst = LoadLibrary(_T("C:\\jnatest.dll")); if( hInst != NULL ) { typedef char* (*maFonction)(char*, char*); […]

C#中的本地窗口层次结构和类名

我正在创build一个函数来查找给定窗口层次结构的特定窗口,如下所示: protected bool MapWindowHierarchy (ATS.Library.Window window) { bool result = false; List<Process> processes = null; processes = GetProcesses().ToList(); processes.ForEach ( process => { if (process.MainWindowHandle == window.Handle) { // Populate window properties. // Get child windows with filled properties. } } ); return (result); } protected bool MapWindowHierarchy (List<ATS.Library.Window> windows) { return (windows.All(window => this.MapWindowHierarchy(window))); […]

在与Mac兼容的Windows上制作ac#应用程序

我在Windows中创build了ac#visual studio应用程序。 该应用程序已完成,它工作得很好。 我创造了这个我的工作,我们使用Windows和Mac的。 除了重写所有的代码,我怎样才能让我的应用程序与Mac兼容。 我读了关于Xamarin,但看起来像是从一开始就使用,而不是在应用程序完成后使用。 谢谢

使用命令行csc.exe创build一个C#可移植类库?

我还没有find任何有关如何做到这一点的信息,甚至根本没有可能。 http://msdn.microsoft.com/en-us/library/e13syb43 没有提到关于构build一个可移植的类库的任何事情 http://msdn.microsoft.com/en-us/library/gg597391.aspx 没有提到任何有关命令行界面的内容。 有没有其他人试图做到这一点,发现一个解决scheme/发现它是不可能的?

c ++ xml,用于Windows和Linux的tcp / ip库

我有这个处理xml和tcp / ip消息的C#客户端,我必须将其转换为C ++,但是我必须将它转换为C ++才能在Windows和Linux上运行。 是否有一套用于xml和tcp / ip的标准库,可以在Windows和Linux上使用? 对不起,如果这听起来像一个愚蠢的问题 – 我对C#和.NET非常熟悉,但我不熟悉本机C + + – 我真的不知道任何标准库,只是语法。 如果有帮助,这是老板的确切消息。 1)读/创build非​​常简单的XML,并且 2)使用Windows和Linux上存在的库从C ++接收/发送TCP消息。 希望有一个,你可以在Windows上开发,只需在Linux上做一个快速testing。

失去参数值

我正在编写一些东西,我正在传递一个string给构造函数。 生成string的方式没有任何变化,但是(当我在Visual Studio社区中运行debugging工具时)第一次失去了该值,但在其他时间显示了一个值。 间歇性地,该值报告该string为空,或者它应该是的值。 现在,我真的不知道如何logging我正在做什么,所以这里是基础知识。 第一部分是TempDir的定义。 我使用这些临时目录作为testing目录,当TempDir(和testing)超出范围时,会自动自杀,并删除内容。 最后,工作,没有损失的价值版本 public class TempDir : IDisposable { private readonly string _path; public string ActiveDirectory => _path.Substring(_path.LastIndexOf('/') + 1, (_path.Length – _path.LastIndexOf('/') – 1)); public string Path { get { return _path; } } public TempDir(string path) : this(path, false) { } public TempDir(string path, bool KillExisting) { _path […]

Luke Stackwalker在运行时返回错误,gprof正常工作

我习惯了gprof分析我的C代码,但是我想开始使用基于GUI的Windows应用程序,比如Luke Stackwalker。 gprof在我的二进制文件上工作得很好,但Luke Stackwalker有一些问题: Launching executable C:\lshare\POT03\Eclipse\Debug\POTaak3.exe. SymInit: Symbol-SearchPath: ';.;C:\Program Files\Luke Stackwalker;C:\Program Files\Luke Stackwalker;C:\WINDOWS;C:\WINDOWS\system32;SRV*C:\websymbols*http://msdl.microsoft.com/download/symbols;', symOptions: 530, UserName: 'Pieter' OS-Version: 5.1.2600 (Service Pack 3) 0x100-0x1 C:\lshare\POT03\Eclipse\Debug\POTaak3.exe:POTaak3.exe (00400000), size: 61440, SymType: '-unknown-', PDB: '$Tƒ|' C:\WINDOWS\system32\ntdll.dll:ntdll.dll (7C900000), size: 753664, SymType: '-unknown-', PDB: '©Uƒ|' C:\WINDOWS\system32\kernel32.dll:kernel32.dll (7C7D0000), size: 1048576, SymType: '-unknown-', PDB: '©Uƒ|' C:\WINDOWS\system32\msvcrt.dll:msvcrt.dll (77BE0000), size: 360448, SymType: '-unknown-', PDB: […]

简单的方法来调用标准邮件客户端从c + +收件人的地址和主题?

TcKs的答案给了我一个想法,因此我尝试了以下内容: system("mailto:thomas.muster@domainname.com?subject=Test"); 和 STARTUPINFO info = {sizeof(info)}; PROCESS_INFORMATION processInfo = {0}; if (!::CreateProcess(NULL, "mailto:thomas.muster@domainname.com", NULL, NULL, FALSE, 0, NULL, NULL, &info, &processInfo)) { MessageBox("Couldn't invoke Standard Mail Client"); return; } 但是第一种和第二种forms都没有工作。 你有任何简单的解决scheme? 谢谢!

如何使用C ++ win32 API中的pwdlastset值和maxpwdage值来获取pwdexpirydate?

我使用ADSI获得了maxpwdage值和pwdlastset值。 现在我想检查密码到期date… hr = pDomain->get_MaxPasswordAge(&ret); maxpwdage给432000 … hr = pUser->get_PasswordLastChanged(&expirationDate); pwdlastset给41176.470196759263 … 如何使用此值来实现密码失效date?