[C++]弱い外部リンケージ、とはなんでしょうか?
Posted: 2017年9月27日(水) 02:30
お世話になっております。
環境:Windows 10、Visual Studio 2015
C++でoperator newをオーバーライドしたところ、
LNK2005 "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z) は既に MSVCRTD.lib(new_scalar.obj) で定義されています。
というエラーにぶつかりました。
https://support.microsoft.com/ja-jp/hel ... s-are-link
ではMFCが例ですが、operator newは弱い外部リンケージを使用しているため、
CRTライブラリより先にリンクすることで解決しそうです。
そこで疑問ですが、この「弱い外部リンケージ」とは具体的にどういう意味なのでしょうか?
先に他がリンクしていれば、リンクしようとしない、ということでしょうか?
ではそういう場合、自分でこの「弱い外部リンケージ」を実現するにはどういった設定をすれば可能でしょうか?
よろしくお願いいたします。
環境:Windows 10、Visual Studio 2015
C++でoperator newをオーバーライドしたところ、
LNK2005 "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z) は既に MSVCRTD.lib(new_scalar.obj) で定義されています。
というエラーにぶつかりました。
https://support.microsoft.com/ja-jp/hel ... s-are-link
ではMFCが例ですが、operator newは弱い外部リンケージを使用しているため、
CRTライブラリより先にリンクすることで解決しそうです。
そこで疑問ですが、この「弱い外部リンケージ」とは具体的にどういう意味なのでしょうか?
先に他がリンクしていれば、リンクしようとしない、ということでしょうか?
ではそういう場合、自分でこの「弱い外部リンケージ」を実現するにはどういった設定をすれば可能でしょうか?
よろしくお願いいたします。