如何防止 MSVC 删除未使用的字符串?

How can I prevent MSVC from deleting unused strings?

MSVC 将从已编译的可执行文件中删除未使用的 char* 字符串:

#include <stdio.h>

char* test = "Hey, I'm a string.";
char* test2 = "I'm yet another string.";

int main(int argc, char* argv[])
{
    puts("test123");
    puts(test2);

    getchar();
    return 0;
}

IDA 字符串列表:

我该怎么做才能强制 MSVC 将这些字符串保留在 .exe 中?

来自linker /OPT option documentation

/OPT:NOREF keeps functions and data that are never referenced.

如果你只想保留特定的数据,那么使用/INCLUDE/INCLUDE:test.