问题标签 [visual-c++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何将所有 Visual Studio 2008“宏”传递给 Python 脚本?
[注意:这个问题与这个问题相似但不一样。]
Visual Studio 定义了几十个“宏”,它们是一种模拟环境变量(与 C++ 宏完全无关),其中包含有关正在进行的构建的信息。例子:
这是我看到的完整的 43 个内置宏集(您的宏可能会有所不同,具体取决于您使用的 VS 版本和启用的工具):
其中,只有四个(、 和FrameworkDir
)FrameworkSDKDir
设置在用于构建事件的环境中。VCInstallDir
VSInstallDir
正如 Brian 所提到的,用户定义的宏可以定义为设置在构建任务执行的环境中。我的问题是内置宏。
作为构建过程的一部分,我使用 Visual Studio 构建后事件来运行 python 脚本。我想将整个宏集(内置和用户定义)传递给我在环境中的脚本,但我不知道如何。在我的脚本中,我可以访问常规环境变量(例如,Path、SystemRoot),但不能访问这些“宏”。我现在所能做的就是将它们作为命名选项逐个传递,然后在我的脚本中进行处理。例如,这是我的 Post-Build Event 命令行的样子:
除了让人头疼之外,Post-Build Event 命令行的大小也有限制,所以即使我想通过这种方法也无法传递几十个宏,因为命令行被截断了。
有谁知道是否有办法将整组宏名称和值传递给不需要切换到 MSBuild(我认为它不适用于本机 VC++)或其他类似 make 的构建工具的命令?
winapi - 以编程方式修改/检测本地安全策略
是否可以至少执行以下操作之一:
1) 检测本地安全策略的设置(帐户:限制本地帐户使用空白密码只能登录控制台)
2)修改该设置
使用 Win32/MFC?
winapi - 获取 Windows 上任何用户的 CSIDL_LOCAL_APPDATA 路径
是否有任何 Win32/MFC API 来获取我想要CSIDL_LOCAL_APPDATA
的任何用户(不仅是当前登录的用户)?假设我有一个“域\用户”形式的用户列表,我想获得他们的路径列表 - 这可能吗?
visual-c++ - 为什么我在 Visual Studio 中编译 C++ 项目时会出现致命错误“LNK1104:无法打开文件 'C:\Program.obj'”?
我在 Visual Studio 2008 中创建了一个新的 C++ 项目。尚未编写任何代码;只有项目设置已更改。
当我编译项目时,我收到以下致命错误:
致命错误 LNK1104:无法打开文件 'C:\Program.obj'
c++ - 首次编译错误时自动停止 Visual C++ 2008 构建?
我知道我可以编译单个源文件,但有时——比如说,在编辑许多.cpp
文件使用的头文件时——需要重新编译多个源文件。这就是 Build 的用途。
VC9 (Visual C++ 2008) 中“Build”命令的默认行为是尝试编译所有需要它的文件。有时这只会导致许多失败的编译。我通常只是注意错误并按 ctrl-break 手动停止构建。
有没有办法配置它,使构建在第一个编译错误(不是第一个失败的项目构建)时自动停止?
windows - 在 Visual C++ 中构建错误/成功的声音?
在长时间的 Visual C++ 构建中,听到某种(可选)声音对于构建/编译结果非常有帮助,例如:
- 个别编译错误
- 文件编译成功/失败
- 构建成功/失败
- 批量构建成功/失败
有谁知道如何在 Visual C++(尤其是 Vista 上的 Visual C++ 2008)中为这些类型的构建事件启用声音?
security - 是否可以冒充用户而不登录?
是否可以在不提供用户名/密码的情况下模拟用户?基本上,我想CSIDL_LOCAL_APPDATA
使用该功能为用户(不是当前用户)获取ShGetFolderPath()
。我目前拥有的只是该用户的 SID。
c++ - 不能从调试 dll 很好地导入间接 Typelib
使用 VC2005,我有 3 个项目要构建:
- libA(包含一个类型库,生成 libA.dll):IDL 有一行
library libA { ...
- libB(包含一个导入libA的typelib,结果是libB.dll):IDL有一行
importlib( "libA " );
- libC(导入 libB):源文件之一包含
#import <libB.dll>
由编译器按以下#import <libB.dll>
方式处理(根据文档):
- 搜索 %PATH% 的目录
- 搜索 %LIB% 的目录
- 搜索“其他包含路径”(/I 编译器选项)
编译 libC 时,我可以看到 cl.exe 清楚地能够在可执行路径上找到 libA.dll(使用 Filemon.exe)
VC 错误 C4772: #import of typelib 与另一个依赖项
但是,仍然找不到 libA 命名空间,并且所有对 libA 类型的引用都替换为__missing_type__
(编辑)同时,我发现问题仅在使用调试 dll 时出现。
以前有人见过这个问题吗?并解决了?
visual-c++ - 如何在 VC++ 2005 中重命名整个项目
我为自己做了一个非常大的项目,最近一个客户要求他们自己的版本进行一些修改。项目名称相当愚蠢,我的客户想要源代码,所以我认为最好将所有文件重命名为
等等。不幸的是,在我将所有内容重新添加在一起之后,我看不到任何更改项目名称本身的方法。另外,现在我在编译时遇到了这个错误。
必须有一种更简单的方法来改变这一切,对吧?
c++ - 奇怪的 MSC 8.0 错误:“ESP 的值未在函数调用中正确保存......”
我们最近尝试将我们的一些 Visual Studio 项目分解为库,并且在一个测试项目中,一切似乎都可以很好地编译和构建,其中一个库项目作为依赖项。但是,尝试运行该应用程序给了我们以下令人讨厌的运行时错误消息:
运行时检查失败 #0 - ESP 的值未在函数调用中正确保存。这通常是调用使用不同调用约定声明的函数指针的结果。
我们甚至从未为我们的函数指定调用约定(__cdecl 等),将所有编译器开关保留为默认值。我检查了项目设置对于跨库和测试项目的调用约定是一致的。
更新:我们的一位开发人员将“Basic Runtime Checks”项目设置从“Both (/RTC1, equiv. to /RTCsu)”更改为“Default”,运行时消失了,程序显然运行正常。我完全不相信这一点。这是一个适当的解决方案,还是一个危险的黑客攻击?