我創建在Visual Studio 2012個快遞(爲當然的桌面)的空C++項目,並增加了一些隨機的基本代碼:這是什麼「CRT未初始化」錯誤?
#include <cstdio>
#include <cstdlib>
typedef struct examplestruct
{
unsigned char num1;
unsigned short num2;
unsigned long num3;
unsigned long long num4;
} EXAMPLESTRUCT;
void examplefunction(unsigned long *num, int num2)
{
*num += num2;
return;
}
int main(int nArgs, char **pszArgs)
{
EXAMPLESTRUCT ExStructInstance = {0xFF, 0xFFFF, 0xFFFFFFFF, 0xFFFFFFFFFFFFFFFF};
printf("%d, %d, %u, %ull\n", ExStructInstance.num1, ExStructInstance.num2, ExStructInstance.num3, ExStructInstance.num4);
unsigned long num5 = ExStructInstance.num1 + ExStructInstance.num2;
printf("%d\n", num5);
examplefunction(&num5, 10);
printf("%d\n", num5);
system("pause");
return 0;
}
(如果你想知道到底這是怎麼樣的,我拆卸創建可執行文件來觀察優化編譯器的行爲,同時也更多地瞭解x86彙編。)
下鏈接在項目設置中,我選擇Multi-threaded (/MT)
運行時刻庫,所以這將靜態鏈接。
我編譯和F5開始調試並立即在消息框中得到這個錯誤:
運行時錯誤!
程序:C:\用戶\ XXXXX \文檔\ P ...
R6030
- CRT沒有初始化
所以,這個基本的程序將無法運行由於運行時庫的一些問題,我無法弄清楚!
任何想法?我只想知道這裏發生了什麼。提前致謝!編輯:僅供參考,這是所有在發佈模式下完成的。
你說你編譯並開始調試,但你也說你在發佈模式下工作。你確定這兩點? – alestanis
選中此項 - http://blogs.technet.com/b/virtualworld/archive/2010/07/07/r6030-crt-not-initialized.aspx – user93353
@alestanis可以調試發佈版本,只要構建編譯時打開調試信息;即使它不是,你仍然可以附加一個調試器,雖然 – stijn