Articles of visual studio

在Windows上应该如何使用开源库?

有很多可以用Visual Studio编译的开源库。 我将一个程序从Linux移植到Windows,但依赖于一些库。 我不知道Windows上有关库的最佳实践。 在Linux上,这些库通常是发行版的一部分。 例如,要在Debian上使用sqlite ,只需要安装libsqlite3-dev ,包含文件和库(包括静态和dynamic)将自动安装并可用于您的程序。 如果你需要一个不同于你的发行版本的版本,你可以将它编译到你的主目录,安装到~/include和~/lib ,并设置适当的环境variables,以便你的编译器在searchpath中包含这些目录。 使用在Windows上作为源分发的库的最佳方法是什么? 如果我dynamic链接,而不是静态链接,是否有一种简单的方法将所需的DLL复制到输出目录,以方便重新分配(假设满足许可证要求)?

RegCreateKeyEx()和GetLastError()

为什么RegCreateKeyEx()返回一个LONG ,而不是通过SetLastError()设置DWORD错误代码? 将它的LONG返回值转换为DWORD ,然后将它设置为SetLastError()的全局错误代码是否安全? http://msdn.microsoft.com/en-us/library/windows/desktop/ms724844(v=vs.85).aspx

sscanf Modifier%Fd扫描的types是什么?

我遇到了一些具有以下types的行的遗留代码: sscanf(szBuff,“%Fd%Ff%Fd%Ff” 有没有人select像Fd或Ff修饰符? 如果是这样,那是什么意思? 我似乎无法find任何信息。 代码编译并运行良好。

如何定义task.json通过在Windows上使用cl.exe来编译vscode中的C / C ++代码?

我已经在64位win10上安装了Microsoft Visual C ++ Build Tools 2015,并且可以使用cl.exe通过以下步骤(通过设置path和环境中的一些说明)在简单的命令提示符窗口中编译和链接C / C ++程序命令行版本的variables ): 1. cd "\Program Files (x86)\Microsoft Visual Studio 14.0\VC" 2. vcvarsall amd64 3. cl helloworld.c helloworld.c只是一个简单的C源文件来打印“Hello world!”。 我也尝试使用task.json来直接编译和链接vs代码中的C / C ++程序。 这是我的task.json: { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "command": "vcvarsall amd64 && cl", "isShellCommand": true, "args": ["${file}"], […]

Subversion:你如何避免忘记检查内容?

在两个不同的地点,在颠覆的项目上工作的三台不同的计算机上,我曾经偶尔忘记在一个位置检查东西,这样我就不能在最新的代码上工作,当我想继续工作的时候在另一个地方。 我相信其他人也有类似的问题。 我可以做些什么来避免这个问题? 有帮助的工具? 通知我可以设置? 我在Windows7电脑上使用Visual Studio 2008和TortoiseSVN。

从Visual Studio Solution生成Make文件(用于GCC)

我想在Linux下使用GCC编译我的Visual Studio解决scheme ,包含三个项目。 该解决scheme包含两个DLL项目和一个使用这些DLL的应用程序(.EXE)项目 。 源代码不包含任何Windows依赖项。 如何将解决scheme(包含3个项目)转换成可以在Linux中使用GCC编译的文件。 是否有任何工具将Visual Studio解决scheme(项目)转换为文件。 Visual Studio版本是Visual Studio 2008

基于操作系统的C ++条件编译

我想用C ++编写一个包含系统调用的跨平台函数。 我可以检查哪些条件编译标志来确定正在编译代码的操作系统? 我主要对Windows和Linux感兴趣,使用Visual Studio和GCC。 我认为这应该是这样的: void SomeClass::SomeFunction() { // Other code #ifdef LINUX LinuxSystemCall(); #endif #ifdef WINDOWS WindowsSystemCall(); #endif // Other code }

哪个字体是MFC对话框控件的默认字体?

下面的图片(放大,所以你最好看到差异)显示dynamic创build的编辑控件(上面的两个例子)和从对话框编辑器(下面的例子)创build的编辑控件之间的字体差异。 我怎样才能使我的dynamic创buildCEdit控件的字体看起来像默认(下面的例子)? 我已经创build了如下的CEdit控件: obj->CreateEx(WS_EX_CLIENTEDGE, _T("EDIT"), _T(""), WS_CHILD | WS_VISIBLE | WS_TABSTOP, rect.left, rect.top, rect.Width(), rect.Height(), GetSafeHwnd(), reinterpret_cast<HMENU>(mId)); obj->SetFont(&mFont); // mFont was created in the Dialog Constructor // with mFont.CreatePointFont(80, _T("MS Shell Dlg")); 谢谢你的帮助!

在预编译事件中设置环境variables并在编译步骤中使用

在Visual Studio 2003中,我试图在预编译事件中设置一个环境variables,然后在编译步骤中使用这个环境variables,但是这个值似乎没有被传播。 例如,如果预构build事件包含此(直接或在batch file中): set MY_LIB_VERSION=1.0.0 和AdditionalIncludeDirectories有这样的: c:\path\to\library\my_lib_v$(MY_LIB_VERSION)\include 那么我希望编译工作,如果my_lib_v1.0.0目录存在。 但是,我得到了 c:\ path \ to \ prog \ my_prog.c(22):致命错误C1083:无法打开包含文件:'my_lib.h' 项目:警告PRJ0018:未find以下环境variables: $(MY_LIB_VERSION) 我推断,在预生成事件中设置的环境variables因此没有被传播到编译步骤,但我可能会失去一些东西。 如何在预编译事件中设置环境variables并在编译步骤中使用它? (另外,任何其他明智的方法定义一个库版本,并多次使用它的AdditionalIncludeDirectories和AdditionalLibraryDirectories也可以做到。) 更新 :我最终以不同的方式解决了我们的问题。 我们使用的是Subversion,并且在项目源代码的dependencies的子目录上设置了svn:externals属性,这样一个项目的签出就会检出<svn_path>\libraries\my_lib_v1.0.0并将其称为dependencies\my_lib工作副本。 然后项目设置可以引用dependencies\my_lib\include和dependencies\my_lib\include 。 升级到版本1.0.1的my_lib就是编辑svn:externals属性 – 代码和项目设置不需要改变。

Visual Studio编译但exe不存在

在其他人的环境下编译的源代码在我的环境中将无法正常工作。 当我重build编译时发生,但是当Visual Studio将exe文件从/ obj / debug / {解决scheme}移动到/ debug / {解决scheme}时,无法在/ obj / debug / {解决scheme}中findexe文件。 为了使这更加疯狂,即使我重新安装Visual Studio它不起作用。 在其他人的环境下,它可以发现。 请注意,这是一个Windows Mobile 6,Compact Framework 3.5项目,Visual C ++项目。 编辑:Visual Studio 2008正在使用。 编辑2:再次看日志后来找出它说它正在编译,但它并没有真正编译。 有趣的是,它不会抛出任何错误,直到它试图链接代码。 当它去链接目标文件,他们不在那里,它失败。