Visual Studio 2012 Express(もちろんデスクトップ用)で空のC ++プロジェクトを作成し、ランダムな基本コードを追加しました。
#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:\ Users \ xxxxx \ Documents \ P .. ..
R6030
- CRTが初期化されていません
したがって、この基本的なプログラムは、ランタイムライブラリに問題があるために実行されません。これは、私には理解できません。
何か案は?ここで何が起こっているのか知りたいのですが。前もって感謝します!
編集:参考までに、これはすべてリリースモードで行われます。