C++ 获取文件数据预处理器宏

C++ 获取文件数据预处理器宏,c++,c,windows,visual-studio,visual-c++,C++,C,Windows,Visual Studio,Visual C++,我在一个解决方案中有两个C/C++可执行项目。其中一个项目的产出需要另一个项目的产出;将第二个项目想象成某种类型的安装程序(它不是,所以我不需要安装程序项目,但它会像读取第二个项目一样读取其输出) 是否有某种方法可以将第一个项目输出的原始数据转换为编译时可用的数据?这就是我的想法: // build order is set so this second project is built after the first is completed /*c++ constexpr*/ unsign

我在一个解决方案中有两个C/C++可执行项目。其中一个项目的产出需要另一个项目的产出;将第二个项目想象成某种类型的安装程序(它不是,所以我不需要安装程序项目,但它会像读取第二个项目一样读取其输出)

是否有某种方法可以将第一个项目输出的原始数据转换为编译时可用的数据?这就是我的想法:

// build order is set so this second project is built after the first is completed

/*c++ constexpr*/ unsigned char ProjectOneOutput[ ] =
    SOME_PREPROCESSOR_MACRO_TO_READ_FILES( PROJECT_ONE_OUTPUT_PATH );

// code that uses ProjectOneOutput goes here
编辑:将不工作

  • 外部链接不是我想要的,除非有一种直接在文件中实现的方法

  • 这不是原始的C/C++,它需要一个外部程序

  • 该文件是PE,因此不能包含在
    STR(


  • 没有预处理器设施可以让您读取二进制文件。但是没有什么能阻止你编写一个小程序,甚至是shell脚本,它读取一个二进制文件并输出C代码,从而初始化文件内容中的
    char
    数组


    然后,您的程序可以包含生成的文件。因此,您需要做的就是将转换程序添加到构建过程中

    资源才是出路。如果有人需要,我可以更新此答案以获得更多详细信息。

    修改第一个程序以输出头文件?您的意思是什么?第一个文件是PE。它不能仅仅被制作成一个“头文件”。此外,我不认为将其作为头文件有什么意义。我不希望有一个外部程序,它会破坏项目本身的全部目的。@cryotography:它不是一个外部程序,它是构建系统的一部分(并且包含在项目中)。你不需要用编译的代码来分配它,而不需要分配你正在使用的C++编译器。它甚至不是DLL。一旦编译完成,它的工作就完成了。那么您的意思是添加一个项目来读取并创建一个带有数据的无符号字符数组的文件?在相关项目编译之前,我该如何让这个项目运行?@cryptographyman:遗憾的是,我不知道如何使用Visual Studio配置构建配方。对于标准的bsd-like makefile,它很简单,这样的解决方案非常常见。我相信这在VisualStudio中同样微不足道,因为带有代码生成器的复杂项目也在该环境中编译。