謎
MFCDLLに普通のDLLを追加したら起きた。
1 2 3 4 5 6 |
1>------ ビルド開始: プロジェクト: HotKeyManager, 構成: Debug Win32 ------ 1>mfcs140ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 は既に MSVCRTD.lib(dll_dllmain_stub.obj) で定義されています。 1> ライブラリ C:\local\msys2\home\skYjennr\gitdev\HotKeyManager\Debug\v142\HotKeyManager\x86\HotKeyManager.lib とオブジェクト C:\local\msys2\home\skYjennr\gitdev\HotKeyManager\Debug\v142\HotKeyManager\x86\HotKeyManager.exp を作成中 1>C:\local\msys2\home\skYjennr\gitdev\HotKeyManager\Debug\v142\HotKeyManager\x86\HotKeyManager.dll : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。 1>プロジェクト "HotKeyManager.vcxproj" のビルドが終了しました -- 失敗。 ========== ビルド: 0 正常終了、1 失敗、1 更新不要、0 スキップ ========== |
解決法
MFCDLLの「追加の依存ファイル」にmfcs140u.libを追加する。
mfcs140uは強制的にリンクされるらしく、それはCRTよりも早くリンクされなければならないのにDLLを追加したらから順番がずれた?
140とかuとかは場合によって変わるかもしれない。140はVisual Studio 2019あるいはもっと前のバージョン、uはユニコード?、デバッグバージョンのものもあるかもしれないが大変なので無視
ググるといろんな解決法が提示されているけど自分の場合はこれで直った。
追記
デバッグでビルドすると警告が出るが、mfcs140ud.libにすると消える