Home > C言語 | プログラム > CSTLを使ってDLLを小さくするっていう話

CSTLを使ってDLLを小さくするっていう話

小さいDLLを作るには下記サイトが参考になる。
http://www.geocities.co.jp/egggarden/win32api/miniexe.htm
ひとつのポイントとして
#pragma comment(linker, "/entry:\"DllMain\"")
を定義しておけばいいと言うのがあるんだが、これをやるといろいろな制限がつく。
この中でも私がはまった(なかなか気づかなかった)のが
 ・strcpyとかsprintfとかが使えない
 ・浮動小数点が使えない
 ・STLが使えない
だった。上記に違反すると、VCでリリースモードでビルドしようとしても、LNK2019エラーとやらで”error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。LIBCMT.lib”ってでてリンクできない。

strcpyとかはlstrcpyとかそういうWin32APIによる代替手段を使う。以下のサイトが参考になる。
http://www.arcpit.co.jp/winapi/api_01/ap010407.htm
浮動小数点に関しては、
EXTERN_C int _fltused = 0x9875;
をどっかに定義しとく。これが何かは全く謎だが、それで動くんだから仕方がない。
で、ここまではいいとしてもSTLはどうしようもない。もう自分で作るしかないのか!?と思われたときにCSTLを見つけたっていう。要するにSTLの代わりにCSTLを使っておけばLNK2019エラーを回避できるという話。
すごく便利です。

以上

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://red-treasure.com/report/wp-trackback.php?p=354
Listed below are links to weblogs that reference
CSTLを使ってDLLを小さくするっていう話 from コスミー報告書[社外秘]

Home > C言語 | プログラム > CSTLを使ってDLLを小さくするっていう話

Search
Feeds
Meta
 合計:019093
 今日:0086 昨日:0146

Return to page top