2017-11-29 41 views
2

foo.dllの関数を1つの構成で呼び出し、foo.dllを使用しない2番目の構成を持つプログラムがあります。 foo.dllに必要なときにだけ存在するようにしたい。私は現在、FLAGVAR == 1はfoo.dllが使用されることを意味C++遅延ロードDLLリンカエラー

#define FLAGVAR 0 

又は

#define FLAGVAR 1 

を使用して、2つのバージョンを切り替えます。私はリンカー - >入力 - >追加の依存関係にfoo.dllが含まれている場合、その後、私のプログラムは関係なく、FLAGVARの値のビルドを

#if FLAGVAR == 1 
#import "foo_file.h" 
#endif 
... 

#if FLAGVAR == 1 
int foobar() {...} 
#endif 

:私は、このように私のimport文と関数宣言を囲みます。

は、ここに私の問題だ:

私はFLAGVARの== 0は、このように、私はリンカー - >入力 - >ディレイにfoo.dllを移動したバージョンに存在するようにfoo.dllを要求したくありませんロードされたDLL。 FLAGVAR == 0の場合、foo.dllは不要で、うまく構築できます。しかし、FLAGVAR == 1の場合、foo.dllの関数がリンクできないと不平を言うLNK2019エラーが発生します。

FLAGVAR == 1の場合、foo.dllだけを要求するという目標をどのように達成できますか?遅延DLLロードを間​​違って使用していますか?あなたの助けを前もってありがとう!

のVisual Studioに2017を使用して、バージョンのコメントから、このリンクに基づいて解決15.4.5

+0

、このチェックアウト:代わりに、ヘッダファイルで、私は、次の数行を置くhttps://stackoverflow.com/questions/12821391/c-visual-studio-linking-usingを-pragma-commentは、あなたのニーズに適しているかもしれません。 – zzxyz

+0

これは完璧です、ありがとう! – wcroughan

答えて