弁財天

ゴフマン「専門家を信じるのではなく、自分自身で考えて判断せよ」

x64環境の_DllMainCRTStartup@12 エントリポイントはどこにあるの?w update2

ぐは。このWindowsで動作するC言語で書かれた業務自体が種明かしになってるw。
【パナマ文書】国税庁長官の天下りとドリームインキュベータと楽天の関連を調べろとアソー財務大臣w。
LBP1210のドライバてスパイウェアだったのきゃ?

LINK : error LNK2001: unresolved external symbol _DllMainCRTStartup@12
LINK : error LNK2001: 外部シンボル "_DllMainCRTStartup@12" は未解決です。

ありえねーw。

// プロジェクト→設定→リンク の、
// カテゴリ に アウトプット を選択し、
// エントリポイントシンボル に _DllMainCRTStartup@12
// を設定する。

レジストリを見て、プリンタードライバにアクセスして、プリンターを選択するプリンター・ドライバみたいなアプリw。マニアック杉w。

MSDN→Unresolved external symbol _DllMainCRTStartup@12 on x64 build

Well, the @12 implies that there will be 12 bytes worth of parameters passed to the _DLLMainCRTStartup function. This is probably true in Win32 but not x64.

I don't know for sure, but I would guess @20 would be the right number (8 bytes for the HINSTANCE and void * and 4 bytes for the DWORD)

Marked as answer by Shu 2017 Wednesday, July 08, 2015 11:19 AM
Monday, June 08, 2015 3:13 PM

furien.jp→今さら聞けない!ランタイムライブラリとは?
MSDN→ランタイム ライブラリの動作 Visual Studio 2015

MinGW→build dll without c runtime dependency

Thank you for the suggestion, adding -entry=__DllMainCRTStartup@12 works around the bug.
え。MinGWでも使える有名なエントリポイントw

ギフハフじゃなくてギットハブ→DllEntryPointが間違っていた問題を修正 #103

Alalf commented on 3 Mar 2013
プログラム内部でDllMain=DllEntryPointならば、二つエントリポイントを用意する必要は無い(一つでいい) また、DllMain/DllEntryPointをExportせずに_DLLMainCRTStartupに任せる場合、Win32なら_dllmaincrtstartup@12、x64なら_dllmaincrtstartupがエントリポイントになっていればいいはず。
たしかにx64が_dllmaincrtstartup@12になってないのは不思議だが、そういう決まりになっているっぽいのでしょうがない。
SCFH64.ax/SCFH.axをdumpbinしたら_DLLMainCRTStartupがエントリポイントになってない・・・?古いVSとVS2012ではエントリポイントのデフォルトが違うのか・・・?
まあなんにせよVS2012のredistをいれれば何とかなる問題に見える。
プロパティ、リンカー、詳細設定、エントリポイントに指定してある_DllMainCRTStartup%4012を削除??w

投稿されたコメント:

コメント
コメントは無効になっています。