>>555
「B.dllでA.dllの関数を呼び出す」事をしたいならそれはある種の遅延ロードでロードなんだけど…
「B.dllはA.dllをロードしない」ってのは具体的に何を目指しているの?

BをAに依存させない為に、exeなどからBに対してAの何かを渡してそれを元にBで目的の(Aの)関数を呼ぶ、だとしたら、
GetModuleHandleを使えば「Aのモジュール名+Aの目的関数名」から「Aのモジュールハンドル+Aの目的関数名」が、
GetProcAddressを使えば「Aのモジュールハンドル+Aの目的関数名」から「Aの目的関数のアドレス」が得られるので、
この三種類のうち一つをBに渡して処理し、得られたAの目的関数のアドレスを関数ポインタとして呼び出せば良い。
インタフェイスになるクラスを定義して、Aの中でその実装を行い、(関数ポインタを含む)インスタンスのポインタをBに渡しても良い。

単純にBのインポートセクションにAを書きたくないだけ、だとしたら、
関数を関数ポインタ経由で呼ぶようにして初期化などの段階でGetModuleHandleとGetProcAddressでその値を求めればよい。