Articles of visual c ++

如何在Windows上构buildgnu`libiconv`?

我想在Windows上构build一个静态库(* .LIB文件) GNU libiconv ,与Visual C ++中的其他库一起使用。 我正在使用的其他库是使用“multithreadingDLL”(/ MD)运行时选项构build的。 所以,我需要使用相同的选项来构buildlibiconv。 问题是libiconv使用GNU构build系统,我想用/ MD选项编译。 你可以在这里看到libiconv的源代码结构: http ://cvs.savannah.gnu.org/viewvc/libiconv/?root=libiconv Zlatkovic先生维护libxml2的GNU libiconv的Windows端口 你可以在这里看到他们: ftp://xmlsoft.org/libxml2/win32/iconv-1.9.2.win32.zip ftp://xmlsoft.org/libxml2/win32/iconv-1.9.2.win32.zip 我不能使用他的端口。 我需要从最新版本的libiconv-1.13开始构build。 我不知道这个人是如何移植它的? 有人可以告诉我如何从这个build立* .lib并使用MSVC编译它? 编辑: 其实,我需要build立几个相同的设置GNU库。 所以,如果我得到一个库的解决scheme。 我可以为所有其他人做同样的事情。

无法安装Windows 7 SDK(需要已安装.NET Framework 4)

我试图在Windows 8和Windows 10机器上安装Windows 7 SDK,并得到这个错误: 如果我点击确定,我不能安装我需要的VC ++编译器,因为它们被禁用=( 在这个错误之后,我尝试安装.NET 4,并得到这个错误: 如何解决它? 有时候我可以在Windows 8上安装这个SDK,但是大多数情况下我都看到这些消息。

串口C ++问题

我有一个问题连接到任何串行端口(想与Arduino交换)在visual studio上使用c + +。 我正在使用Arduino操场上给出的SerialClass ,但无法打开我的端口的句柄。 它会在每次尝试中抛出ERROR_FILE_NOT_FOUND 我一直在testing许多其他注意端口的方法: "COM1" "COM1:" "\\.\COM1" 但没有任何工作。 该系统上的端口是可用的,使用Putty或Arduino IDE工作正常。 另外它不会被其他进程阻塞。 我使用Windows 7 x64,但项目是Win32。 这个类是用 serialPort = new Serial((char*)port); 错误string显示正确的端口名称。 我做错了什么? 文件打开也不起作用。

SetStdHandle对cout / printf没有影响

标题说明了一切。 当我运行下面的代码: HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); HANDLE hFile = CreateFile(TEXT("Foo.txt"), GENERIC_WRITE, FILE_READ_ACCESS | FILE_WRITE_ACCESS, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); SetStdHandle(STD_OUTPUT_HANDLE, hFile); std::cout << "Hello, "; printf("world!\n"); WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), "Hello, world!\n", 13, NULL, NULL); SetStdHandle(STD_OUTPUT_HANDLE, hOut); CloseHandle(hFile); 结果是, Hello, world! 由于对cout和printf的调用以及Hello, world!而被写入控制台Hello, world! 由于对WriteFile的调用,也被写入文件Foo.txt 。 我的假设是,当一切都在开始初始化时,由GetStdHandle返回的HANDLE被caching并重用于cout和printf 。 这是完全合理的,正是我想要的,因为我认为GetStdHandle需要调用操作系统(可能会很长!)。 麻烦的是我想覆盖这个行为,如果可能的话,用应用程序的标准句柄“同步”cout和printf。 在提出任何替代scheme之前,让我准确地描述一下我正在做的事情(是的,我知道为此可以使用freopen )。 我需要做的是在修改之前将当前的标准输出句柄“保存”在一个类似于堆栈的数据结构上,以便能够恢复以前的输出句柄。 任何短小的情况都是不可接受的(即我无法恢复到CONOUT$等)。 这需要有recursion的能力。 也就是说,以下内容应该如你所期望的那样工作: std::cout << "A1" […]

禁止自动播放

我需要禁止海量存储设备的自动播放。 这需要通过在后台运行的服务/守护程序来编程实现。 我知道这可以通过打开一个窗口并处理窗口发送的“queryCancelAutoPlay”消息的应用程序来完成。 这可以做到没有GUI.I具有guid / pid / vid为自动播放需要被禁用的设备。

为什么MSVC编译器比Linux上的gcc和Mac上的Xcode C ++编译器慢得多

我无法弄清楚为什么以下代码片段的执行时间在Windows(MSVC ++)虚拟机,Linux(GCC)虚拟机和Mac(xCode)物理机器上显着不同。 #include <iostream> #include <ctime> #include <ratio> #include <chrono> using namespace std; using namespace std::chrono; int main() { const int TIMES = 100; const int STARS = 1000; steady_clock::time_point t1;// = steady_clock::now(); steady_clock::time_point t2;// = steady_clock::now(); int totalCountMicro = 0; int totalCountMilli = 0; for(int i = 0; i < TIMES; i++) { t1 […]

configurationcl CMD编译Windows

我已经阅读MSDN.com上,要启用命令行编译通过cl命令您必须运行vcvarsall.bat文件。 我已经在CMD中运行这个文件,并使用cl命令编译代码。 问题是我离开CMD并重新打开后,我不再有能力使用CL,每次重新打开CMD时都不得不重新运行vcvarsall.bat。 有没有办法避免这样做? 谢谢。

Windows API将显示正在运行的进程

我想创build一个像小型任务pipe理器的工具。 我想显示所有正在运行的进程,cpu和内存使用情况。 有人可以告诉我相关的API,我可以用这个。 任何链接到相关的网页将不胜感激。 (我想转储的所有运行进程,CPU和内存的统计信息。)在此先感谢。

如何让输出显示在Visual Studio 2005的错误列表的消息窗格中?

我有一个像这样的头文件: #ifndef __GEN_NOTE_MARKERS_TO_DEVELOPERS_HPP__ #define __GEN_NOTE_MARKERS_TO_DEVELOPERS_HPP__ #ifdef _DEBUG // macros for turning a number into a string #define STRING2(x) #x #define STRING(x) STRING2(x) #ifdef TRIAGE_MESG_AS_WARNING #define TRIAGE_TODO_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : warning : TRIAGE TO-DO: " STRING(description) )) #define TRIAGE_FIXTHIS_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : warning : TRIAGE FIXTHIS: " STRING(description) )) #else #define TRIAGE_TODO_TAG(description) __pragma(message(__FILE__"("STRING(__LINE__)") : message : TRIAGE TO-DO: […]

为什么CreateRemoteThread在这里工作?

我试图注入一个线程到另一个进程,这让进程加载一个外部DLL。 这是我在互联网上find的代码,它的工作原理。 HANDLE hThread = CreateRemoteThread (hProcess, NULL, 0, (LPTHREAD_START_ROUTINE) GetProcAddress( GetModuleHandle(L"kernel32"), "LoadLibraryA"), lpMemory, 0, NULL); if (hThread == INVALID_HANDLE_VALUE) { return false; } 但是根据我的理解, GetProcAddress返回的地址位于当前进程的内存空间中,而不是目标进程的内存空间。 那么为什么它工作? 在Windows 7上testing