2016-10-14 8 views
1

のMicrosoft Visual StudioでRedifining C/C++のエントリポイント:
私は私のプログラムのエントリポイントをしようとしてトラブルを持っているだったのVisual Studio 2012で、main
以前呼び出されていません私はちょうど/ENTRYリンカのキーまたは私のプロジェクトの同じ設定(プロジェクト - > 'project_name'プロパティ...->リンカ - >高度 - >エントリーポイント)を使用して正常に動作した:このように:ここでの事、男だ2015

int LetsRock 
{ 
    ... 
    return 0; 
} 

そして、前述したように、私は、必要なだけ/ENTRY:LetsRockを設定し、それが最初に走りました。

しかしのMicrosoft Visual Studioの2015 Enterpriseバージョン14.0.25123.00アップデート2物事は非常に奇妙なを消す:

できるだけ早く私はエントリポイントを再定義するように、コンパイラは私の11個のエラー(実際には10の束を与えます「原因の11日のみ10個のエラーがあることを、言う):

errors list

ここで彼らがしたい画像を開いていない人のために、以下のとおりです。

1>------ Build started: Project: Tester, Configuration: Debug Win32 ------ 
1> Source.c 
1>MSVCRTD.lib(_init_.obj) : error LNK2019: unresolved external symbol __CrtDbgReport referenced in function __CRT_RTC_INIT 
1>MSVCRTD.lib(_init_.obj) : error LNK2019: unresolved external symbol __CrtDbgReportW referenced in function __CRT_RTC_INITW 
1>MSVCRTD.lib(_error_.obj) : error LNK2019: unresolved external symbol ___stdio_common_vsprintf_s referenced in function __vsprintf_s_l 
1>MSVCRTD.lib(_pdblkup_.obj) : error LNK2019: unresolved external symbol __wmakepath_s referenced in function "int __cdecl GetPdbDllPathFromFilePath(wchar_t const *,wchar_t *,unsigned int)" ([email protected]@[email protected]) 
1>MSVCRTD.lib(_pdblkup_.obj) : error LNK2019: unresolved external symbol __wsplitpath_s referenced in function "int __cdecl GetPdbDllPathFromFilePath(wchar_t const *,wchar_t *,unsigned int)" (?GetPdbDllPathF[email protected]@[email protected]) 
1>MSVCRTD.lib(_pdblkup_.obj) : error LNK2019: unresolved external symbol _wcscpy_s referenced in function "int __cdecl GetPdbDllPathFromFilePath(wchar_t const *,wchar_t *,unsigned int)" ([email protected]@[email protected]) 
1>MSVCRTD.lib(_pdblkup_.obj) : error LNK2019: unresolved external symbol ___vcrt_GetModuleFileNameW referenced in function "struct HINSTANCE__ * __cdecl GetPdbDll(void)" ([email protected]@[email protected]@XZ) 
1>MSVCRTD.lib(_pdblkup_.obj) : error LNK2019: unresolved external symbol ___vcrt_GetModuleHandleW referenced in function "struct HINSTANCE__ * __cdecl GetPdbDll(void)" ([email protected]@[email protected]@XZ) 
1>MSVCRTD.lib(_pdblkup_.obj) : error LNK2019: unresolved external symbol ___vcrt_LoadLibraryExW referenced in function "struct HINSTANCE__ * __cdecl GetPdbDll(void)" ([email protected]@[email protected]@XZ) 
1>MSVCRTD.lib(_chandler4gs_.obj) : error LNK2019: unresolved external symbol __except_handler4_common referenced in function __except_handler4 
1>C:\<path to my folder>\Tester\Debug\Tester.exe : fatal error LNK1120: 10 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

私はエントリポイントの設定をmainに設定しても(もちろん、ここではソースファイル内で私の名前を変更しています)、それでも動作しません。同じエラーのセット。

質問:
Visual Studio 2015でC/C++プロジェクトのエントリポイントを正しく再定義するにはどうすればよいですか?

これが不可能な場合は、なぜこの設定を削除しなかったのですか?

+3

を言って、実行されませんでしたVS2015とは異なります](https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/)。 Cランタイムの初期化をバイパスしているので、暗黙のリンク要求も取得されなくなります。プロジェクト>プロパティ>リンカ>入力>追加の依存関係を確認し、vcruntimed.libとucrtd.libを追加してください。これがどれほど不適切かを覚えておいてください.Debug設定の設定でコンパイルしていますが、CRTのデバッグ機能を初期化していません。 –

+0

@HansPassantええ、ありがとうございます - あなたが助言した追加のライブラリで、それはうまくコンパイルされました。 – KKastaneda

答えて

1

OK、Hans Passantとお伝えしましたが、私はちょうど.libを追加しました。vcruntimed.libucrtd.libが問題なく動作しました。それは、これらのlibsなしRelease構成でコンパイルされているが、この方法では正しくWOKないかもしれません - 私の場合は、プログラム

#include <stdio.h> 

int LetsRock() 
{ 
    getchar(); 
    return 0; 
} 

はそれは*非常に* [行われerror LNK2001: unresolved external symbol __imp__getchar

+0

これは、悪いコードの別の例です。 CRT初期化をバイパスしたので、* CRT関数を呼び出すことはできません。 * stdin *を初期化していません。多分それはうまくいくかもしれません、多分それは、多分それは明日働かないでしょう。 –

+0

エントリポイントを再定義してCRTを初期化することは可能ですか? – ComradeJoecool

関連する問題