草庐IT

c++ - 用于在 Windows 上捕获声音的 API

我需要一个C++API来枚举WindowsVista、Windows7和Windows8的输入设备和捕获声音。如果没有通用API,我可以使用针对不同版本Windows的操作系统特定API。我在Microsoft站点上找到了一些引用资料,但我不知道该选择什么。你有什么建议吗? 最佳答案 对于waveInAPI,使用waveInGetNumDevs()和waveInGetDevCaps()。对于核心音频API,使用IMMDeviceEnumerator。对于DirectShow,请阅读:http://msdn.microsoft.com

windows - 使用 VB6 + Windows 7 传递 ByRef 的参数

我已经使用VB6多年,但我遇到了一些相当奇怪的事情,我自己无法确认这个结果。所以我想知道下面代码的输出是否会是77或76代码如下:OptionExplicitPrivateSubcmdOk_Click()DimVAsIntegerV=6CallAddV(V)PrintVEndSubSubAddV(ByRefPAsInteger)P=P+1PrintPEndSub在我的系统(WindowsXP+VB6)上,这按预期工作。所以我得到了第一个输出。但是,我在Windows7+VB6上看到了相同的程序,但输出不一样。谁能解释一下为什么会这样?然而,同样的事情在VB2008+Windows7上工

c++ - MS Visual Studio Windows 中的 Release模式与 Debug模式

我正在使用MSVS9(VS2008)。我的应用程序以及共享库(dll)(我用来链接我的应用程序)也是c++环境。现在观察以下情况:当共享库/dll在Debug模式下构建并且我的应用程序也在Debug模式下构建时结果:应用执行成功当共享库/dll在Release模式下构建并且我的应用程序也在Release模式下构建时结果:应用执行成功当共享库/dll在Release模式下构建并且我的应用程序也在Debug模式下构建时结果:应用程序在未从调用堆栈加载任何符号的情况下崩溃。调用栈:ntdll.dll!76e94684()[下面的框架可能不正确和/或丢失,没有为ntdll.dll加载符号]nt

c++ - 从 x32 迁移到 x64 时出现链接器错误

我最近在VSprofessional2008中将一个项目从x32迁移到x64,但我遇到了这个奇怪的链接器错误:errorLNK2001:unresolvedexternalsymbol__imp_PostMessageWerrorLNK2001:unresolvedexternalsymbol__imp_FlushFileBufferserrorLNK2001:unresolvedexternalsymbol__imp_WriteFileerrorLNK2001:unresolvedexternalsymbol__imp_WaitForSingleObjecterrorLNK2001:

c++ - Windows 和 Linux 最大线程数

Windows或Linux系统可以有多少个线程?我正在编写一个多线程可移植代码,它应该检查系统中的最大线程数。 最佳答案 我敢肯定,如果您真的“需要知道这一点”,那么您的设计就很糟糕。所有现代操作系统都可以支持数千个线程。限制通常更多地是关于可用内存和CPU资源,而不是“您可以在系统X中创建多少线程”-换句话说,如果您的线程确实在做某事,并且实际使用的内存超过一点点,那么在创建理论上的最大线程数之前,系统将耗尽内存。例如,在我的机器上/proc/sys/kernel/threads-max超过250000-我的机器有16GB的内存,

c++ - 在 C++ 中安装和运行 Windows 服务

我是第一次使用Windows服务,经过一些努力,我现在能够在C++中以编程方式安装和卸载服务,我找到了许多指导如何处理的教程ServiceMain和ServiceControlHandler函数。问题是没有教程显示我们首先安装服务,然后在同一个程序中应用ServiceMain和ServiceControlHandler函数。简而言之,我正在尝试将这两种功能集成到同一代码中,但它不起作用。这是我关注的一些链接http://www.codeproject.com/Articles/499465/Simple-Windows-Service-in-Cplusplushttp://www.de

c++ - Sublime Text 启动单独的命令窗口(C/C++)

我正在尝试执行ProgramminginCbyStephenG.Kochan中的所有程序作为练习,让自己熟悉C(在Windows8机器上)的一些更精细的细节(我没有去学校学习计算机科学)。很多书都是简单的程序,我想输入程序SublimeText(与我一直在使用openFrameworks的Code::Blocks相对)。有没有一种简单的方法可以在编译后为程序启动单独的命令窗口。这有点hacky,但我更改了构建的“运行”版本以启动已编译的程序"cmd":["${file_base_name}.exe"]但显然,SublimeText文档说GUI'saresuppressed.我想做的是启

c++ - 从 Windows 在 C++ 中获取系统环境

我尝试从我的C++应用程序中获取Windows中的一些系统环境。我尝试了getenv和GetEnvironmentVariable但都卡住了。一个程序可以编译,但是当我运行它时,我看到指针闪烁了一段时间,没有任何显示,然后程序崩溃并显示消息:运行失败(退出值-1073741819,总时间:10s)我尝试了很多来自网络的示例,所有示例都给出了相同的结果。我试过的一些例子:charl_strSingleVal[20];GetEnvironmentVariable("PATH",l_strSingleVal,20);printf("VariableName:%s\n",l_strSingle

c++ - 为什么 GetProcAddress() 不起作用?

我对DLL编程还很陌生。我已经创建了一个DLL项目,在DLL工程SimpleH.hnamespaceME{classbase{public:static__declspec(dllexport)voidHello();};}__declspec(dllexport)voidHelloWorld();DLL.cpp#include"stdafx.h"#include#include"SimpleH.h"usingnamespacestd;namespaceME{voidbase::Hello(){cout我创建了一个.exe。Main.exe#include"stdafx.h"#incl

c++ - 如何将任意大整数从任意基数转换为不同的基数?

我有一个长度为数十万个字符的n进制(无符号)整数。如何将这个数字(从文件中读取的字符串)转换为2-256之间的任何基数?当然是在合理的时间内。GMP库仅支持2-62位碱基。 最佳答案 GMP使用acleverdivide-and-conquerradixchangealgorithm对于非常大的整数。使用相同的基本思想做一些事情并不难。调用您的基数r和输入数字x。让rp[i]=r^(2^i)对每个i直到rp[i]有大约一半原始数字的位数;调用最后一个rp[n-1]。减少你的数字模rp[n-1]。然后高2^(n-1)radix-r数字