C++ 使用预处理器创建元数据

C++ 使用预处理器创建元数据,c++,metadata,c-preprocessor,C++,Metadata,C Preprocessor,为了更好地识别生成的文件,我想在编译的(c++)*.exe或*.dll中写入一些元数据。此元数据应在编译期间通过#define命令创建 这可能吗?或者是否有其他方法在文件中创建一些易于识别的数据(如元数据)?C样式的字符串在编译后应保持完整。你可以吃点像 char * metadata = "<metadata>Metadata stuff goes here</metadata>"; char*metadata=“这里有元数据”; 然后只需在.exe文件中搜索“元数

为了更好地识别生成的文件,我想在编译的(c++)*.exe或*.dll中写入一些元数据。此元数据应在编译期间通过#define命令创建


这可能吗?或者是否有其他方法在文件中创建一些易于识别的数据(如元数据)?

C样式的字符串在编译后应保持完整。你可以吃点像

char * metadata = "<metadata>Metadata stuff goes here</metadata>";
char*metadata=“这里有元数据”;
然后只需在.exe文件中搜索“元数据”即可找到它


(虽然我不确定您为什么要这样做…

特定于windows,但如果您使用Visual Studio,并且希望能够添加有关正在生成的二进制文件的数据,则可以将版本资源添加到项目中,这样可以轻松更改生成的二进制文件的版本,以及添加一个简短的描述。然后可以在生成的二进制文件的属性中查看此信息


我相信任何使用ms编译器的IDE都能够处理资源文件,但我不确定在Visual studio之外编辑它们有多容易。

有没有其他方法来识别文件(不使用元数据或类似的东西)?仍然不太确定您在问什么,但是,您是否只想在重命名/移动.exe后识别它?如果是这样的话,您可能需要研究散列。我想标记已编译的可执行文件或DLL,以便其他程序可以识别它,并查看它是否仍然是旧的还是新的,与名称无关。好的,我将尝试这个,在我只与Visual Studio合作(明年)之后,我不担心兼容性问题。。。非常感谢你!版本块只有可以编辑的特定字段,因此根据数据量(或类型)可能不合适。但是将数据粘贴到资源部分肯定是正确的方法(无论是在版本块还是自定义资源类型中),因为这样可以在不必grep通过exe的.data部分的情况下发现数据。