2010部分を外部のDLLに移動する以外に、2008ライブラリと2010ライブラリを1つの実行可能ファイルに結合する他の方法を求める場合、答えはおそらく「これを実現する他の簡単な方法はありません」です。
ただし、「VS2008でのVC++ 2010ランタイムライブラリ...(古い2008 IDEの2010ライブラリに対して構築されている)」ではなく、「2008でコンパイルされたプログラムで2010でコンパイルされたDLLを使用する」場合、それは完全に可能です。
プロジェクトで行う最も簡単な方法は、静的にリンクされた標準ライブラリ(MFCを使用する場合)に対してビルド(.exeとDLLの両方)してLoadLibrary
から、.exeで使用してDLLをロードすることです。_declspec (dllexport)
DLLでは、関数(できればextern "C" {}
ガード内)をエクスポート( )して、.exeから.exeで使用できGetProcAddress
ます。
静的リンケージと明示的なロードにより、さまざまなランタイムによって引き起こされる多くの不整合のバグからあなたを救うことができます。
DLLの読み込みと関数呼び出しのコストが心配な場合は、これらの呼び出しをできるだけ少なくすることができます(おそらく、アルゴリズムだけでなく、より高レベルのロジックもDLLに移動することによって)。このissieも参照してください。
また、ネイティブマルチターゲティングを使用してすべてのコードを1つのIDE(2010)でビルドできます(ただし、メインアプリとDLLをそれぞれv9ライブラリとv10ライブラリに対して別々にビルドする必要があります)。