2013-10-18 74 views
0

我创建了简单的C++ Hello世界程序,然后我编译它使用MSVC++,然后我看着可执行文件使用Notepad ++(我知道它不是最好的程序打开二进制文件,但我想要知道,如果有任何人类可读的字符串)。我发现有字串里面A cast to a smaller data type has caused a loss of data. If this was intentional, you should mask the source of the cast with the appropriate bitmask.奇怪的字符串在执行VC++

The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. 

什么是那些字符串,他们从那里来,我如何能够摆脱他们?

+1

您是在调试模式还是在释放模式中?我认为DEBUG会在可执行文件中保存大量数据(字符串或其他)。 – Max

+0

我处于调试模式。 –

+0

标准库包含一些常见错误的消息。 –

回答

1

通过使用文本编辑器,所有常量字符串都是人类可读的。尝试在程序中寻找“hello world”,它会弹出。 (当我们试图弄清楚我们的opencl代码是否值得这么做的时候,第一次碰到这个问题......事实并非如此)。

这些字符串是窗口在每个可执行文件上引发的错误字符串。我不知道如何摆脱它们。

+0

也许是因为它们会导致较大的可执行文件大小? –

+0

@SmaxSmaxović我应该澄清一点,在其他情况下可能是值得的,但在我们这里它并不值得。 – IdeaHat

+0

@SmaxSmaxović当然他们做!在调试模式下构建会导致使用额外的RAM/ROM。建立在发布模式以摆脱它们。 –