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

时间:2015-03-11 17:12:36

标签: c visual-c++

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字符串列表:

enter image description here

如何强制MSVC将这些字符串保留在.exe

1 个答案:

答案 0 :(得分:3)

来自linker /OPT option documentation

  

/ OPT:NOREF 保留从未引用过的函数和数据。

如果您只想保留特定数据,请使用/INCLUDE/INCLUDE:test