Microsoft Visual C ++是Windows的C,C ++和C ++ / CLI编译器。最新版本的编译器是Visual C ++ 2017.编译器支持以下语言:C:支持C90和ISO C ++标准的大部分C99和C11部分,自Visual Studio 2017 C ++开始:支持大多数C ++ 11功能以及Visual Studio 2017 C ++ / CLI中的一些C ++ 14和C ++ 17功能
(MSBuild / Visual Studio C++ 属性表)在属性表的属性组中使用 $(OutDir)
将 Visual Studio 2022 与 C++ 解决方案结合使用。 下面的属性表工作正常: 将 Visual Studio 2022 与 C++ 解决方案结合使用。 下面的属性表工作正常: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders>$(OutDir)</DestinationFolders> </CopyFileToFolders> </ItemGroup> </Project> 但是下面这个不起作用: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <CustomDestination>$(OutDir)</CustomDestination> </PropertyGroup> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders>$(CustomDestination)</DestinationFolders> </CopyFileToFolders> </ItemGroup> </Project> 这是有道理的,因为“CustomDestination”属性是在 VS IDE 中明确定义“OutDir”之前评估的,而“CopyFileToFolder”->“DestinationFolders”项元数据是在所有属性之后评估的。 是否有一种优雅的方法可以在“CopyFileToFolders”项目之前使用任何值(包括一些 $(X))预定义“CustomDestination”,以便我可以将两者移动到单独的属性表上? _ 补充说明: 我提出了以下解决方法,包括像这样单独管理 $(OutDir) : <PropertyGroup> <CustomDestination>$(ProjectDir);$(SolutionDir)SomeDirectory</CustomDestination> <UseOutDir>Yes</UseOutDir> </PropertyGroup> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders Condition="'$(UseOutDir)' == ''">$(CustomDestination) </DestinationFolders> <DestinationFolders Condition="'$(UseOutDir)' != ''">$(OutDir);$(CustomDestination) </DestinationFolders> </CopyFileToFolders> </ItemGroup> 但我想知道是否有人会提出更通用的解决方案。 我也尝试过这样的事情: <PropertyGroup> <CustomDestination>%24(OutDir);%24(ProjectDir)</CustomDestination> </PropertyGroup> <ItemGroup> <CopyFileToFolders Include="$(MSBuildThisFileDirectory)somefile.bin"> <DeploymentContent>true</DeploymentContent> <FileType>Document</FileType> <DestinationFolders>$(CustomDestination)</DestinationFolders> </CopyFileToFolders> </ItemGroup> 但我不知道如何让 VS/MSBuild 将 $(X) 内容替换为 $(CustomDestination) 属性值。 从属性表来看,您似乎想将 somefile.bin 复制到您的自定义路径。我将您的属性表(您说该属性表不起作用)复制到我本地的 c++ 项目进行测试,并且工作正常。它可以识别PropertyGroup中定义的$(CustomDestination)。 这是我的测试结果: 环境:Visual Studio 2022(17.10.4) 但是下面这个不起作用 您的意思是任务CopyFileToFolders无法将somefile.bin文件复制到您的自定义目标还是无法评估$(CustomDestination)?您在构建过程中能看到警告/错误消息吗? 如果您想确定“CustomDestination”属性是否在“CopyFileToFolders”项之前被评估,您可以直接打印它们的值。 <Target Name="test"> <Message Text="'%(CopyFileToFolders.FileType)'" /> <Message Text="'%(CopyFileToFolders.DestinationFolders)'" /> </Target>
为什么我需要为每个 Visual C++ 版本构建特殊的库(二进制文件)?
有很多 C++ 库(大多数?)附带为每个 Visual C++ 版本(2003、2005、2008、2010)构建的特殊二进制文件。 链接为 Visua 构建的 C++ 库有什么问题...
根据cppreference 在常量表达式和常量初始化中,从不执行复制省略。 但实践中似乎并不总是如此。在下面的程序中,函数...
我的环境是 x86 Native Tools for VS 2022。 其他地方的情况可能有所不同 x86-64 和 ARM 等平台。 我正在尝试编译生成的程序集列表 由编译器使用
我正在使用 std::string。在“Autos”和“Locals”调试窗口中,UTF8 字符串显示乱码。 有没有办法显示可读的UTF8?
我有 win32 C++ 代码和 openCV ,我想设计该代码的接口。 它的最佳实施是什么? 我想使用 WPF,但更多网站说 VC++ 不支持它......
如何确定 Windows 应用商店/通用应用程序中哪个 Dll 依赖项加载失败?
运行我正在处理的 UWP 项目时,我收到以下对话框。 “无法激活 Windows 应用商店应用程序‘MyAppsMangledName’。‘MyExeName’进程已启动,但激活请求失败...
我正在尝试从提升的(具有管理员权限)C++ 应用程序中的命令提示符中执行 netsh Winsock Reset Catalog 命令。 HINSTANCE retVal = ShellExecute(NULL, "打开", "cmd",
我想订阅自定义 URL 协议,例如。 “pdf”意味着当单击像下面的链接这样的特制链接时,我会收到一个事件(Windows 启动我的 EXE 并传递链接参数...
我只是想知道Visual C++运行时DLL里面有什么?什么代码?哪些功能?只是对此感到好奇。 预先感谢。
我在读取/写入 XML 之前设置了以下行: tinyxml2::XMLUtil::SetBoolSerialization("true", "false"); // 创建一个带有 bool 属性等的 xml 并保存。
C++:MSVC 链接器上的 ODR 和 extern“C”
我正在测试 Windows link.exe 程序在出现 ODR 违规时的反应。我的意图是,当链接器注意到我的程序有两个相同的定义时,它将失败
我正在尝试在 Windows 上使用 CMake 制作一个非常基本的 Qt5 应用程序。 我使用Qt5的文档来使用CMake[archived][doc.qt.io],而我的main.cpp文件只包含一个main函数。 我的
是否可以定义一个 C++ 函数,其中一个参数通过 EAX 寄存器传递?
旧游戏无法在我的电脑上运行,我想修复它。游戏的某个功能可能会导致该问题。所以我决定把这个功能和Detours挂钩。下面的代码是由IDA生成的。 mbst...
无法在 C++/CLI 中从 System::Object 转换为 System::Windows::Forms::MenuItem
我正在处理我的 C++/CLI 项目,因为我正在添加带有单击事件的子菜单项。我在获取菜单项的文本时遇到问题,因为当我尝试这样做时: 调试::WriteLine("Smt...
我正在开发我的 C++ 项目,因为我正在添加带有单击事件的子菜单项。我在获取菜单项的文本时遇到问题,因为当我尝试这样做时: 调试::WriteLine("SmtpEma...
我很难确定命令行工具 cl.exe 是否就是人们在谈论“MSVC 编译器”时所指的那个。 两者是同一件事还是使用 cl 来连接...
“无操作员”<<' matches these operands" error for JSON::Value, how to write it to cout?
我下面的 C++ 程序应该读取一个名为 english.json 的 json 文件并显示“标题”信息。 #包括 #包括 #包括 我下面的 C++ 程序应该读取一个名为 english.json 的 json 文件并显示“标题”信息。 #include <iostream> #include <fstream> #include <json/value.h> #include <json/reader.h> using namespace std; int main() { Json::Value language; ifstream language_file("english.json", std::ifstream::binary); language_file >> language; cout << language["title"] << endl; return 0; } 但是当我运行程序时,我收到此错误: E0349 无操作员“<<" matches these operands 程序无法显示信息。 我看了文档,但不是很清楚,所以找不到问题的根源。 我还尝试包含 json.h 文件,但它会导致与“无法解析的外部符号”相关的其他错误。 您需要调用正确的as*成员函数来从Json::Value中获取实际值,例如: std::cout << language["title"].asString() << '\n'; // ^^^^^^^^^^ 此外,您应该 #include <json/json.h> 并链接到 jsoncpp 库,以免获得“无法解析的外部符号”。这样,您的程序无需进一步更改即可运行。 试试这个: cout << language["title"].asString() << endl;
下面的代码行为不正确。 当调用 f<0> 或 f<5> 时,它会打印为 if k = true,但 if 语句的行为就像 k = false。当 f<1> 被调用时,它会做相反的事情......
无操作员“<<" does not correspond to these operands
我下面的 C++ 程序应该读取一个名为 english.json 的 json 文件并显示“标题”信息。 #包括 #包括 #包括 我下面的 C++ 程序应该读取一个名为 english.json 的 json 文件并显示“标题”信息。 #include <iostream> #include <fstream> #include <json/value.h> #include <json/reader.h> using namespace std; int main() { Json::Value language; ifstream language_file("english.json", std::ifstream::binary); language_file >> language; cout << language["title"] << endl; return 0; } 但是当我运行程序时,我收到此错误:E0349 无运算符“<<" matches these operands 程序无法显示信息。 我看了文档,但不是很清楚,所以我找不到问题的根源。 我还尝试包含 `json.h` 文件,但它会导致与“无法解析的外部符号”相关的其他错误。 您需要调用正确的as*成员函数才能从Json::Value中获取实际值: std::cout << language["title"].asString() << '\n'; // ^^^^^^^^^^ 试试这个: 计算<< language["title"].asString() << endl;