これは、nlog C++ API の使用に関連していると思います (nlog フォーラムに関する私の質問はこちら)。ここでこの質問をする目的は、より多くの聴衆に私の問題を知ってもらうことと、私の特定のシナリオで VB6 IDE がビルドに失敗したことの背後にある、より一般的なアイデアを得ることです。
簡単に言えば、私が抱えている問題は、nlog の C\C++ API (NLogC.DLL で定義されている) への呼び出しを持つアンマネージ C++ コンポーネントを参照する VB6 コンポーネントの構築に問題があることです。ビルドの問題はコンパイル時に発生するのではなく、バイナリがビルドされているときに発生します。これは、ある種のリンカー タイプの問題であることを示唆しています。VB6バイナリがどのように生成されるかについて十分に知りません。VB6 バイナリが生成されますが、破損しており、起動後すぐにクラッシュします。
VB6 で同様の経験をした人はいますか (nlog や C++ に関係する必要はありません)。
編集:このややあいまいな問題へのすべての応答に感謝します。残念ながら、まだ前進はありません。これを投稿してからの私の発見:
- コンパイル オプションを「微調整」しても、この問題は解決しないようです。
- 「空の」VB6 プロジェクトから nlog 対応の C++ コンポーネントへの参照を追加しても、プロジェクトがクラッシュしたり、奇妙なビルドの問題が発生したりすることはありません。したがって、これは「ネイティブ」な VB6 の問題ではなく、nlog とさまざまなコンポーネント、および他の参照コンポーネントで使用されるサードパーティ ライブラリとの相互作用に関する問題である可能性がありますか?
- C++ 呼び出し規則については、nlog 対応の C++ コンポーネントは、私が見る限り、これらの規則に準拠しており、nlog API 呼び出しを行わない限り、VB6 によって参照されたときに実際に正常に動作します。nlogc.DLL 自体が VB6 に準拠しているかどうかはわかりませんが、API 呼び出しは C++ コンポーネントから行われているため、それは重要ではないと考えていました。VB6 は、C++ コンポーネントが参照しているものを認識したり気にしたりすべきではありません (これに関する私の理解では...)
edit2: また、ビルド中に表示されるエラー メッセージは次のとおりです。「ロード中にエラーが発生しました。詳細については、"xxx" を参照してください。」ログ ファイルを表示すると、「コントロール xxx を読み込めません」と表示されます。興味深いことに、その特定のコントロールへのすべての参照がその特定のプロジェクトから消え、再度ビルドしようとするとコンパイル エラーが発生します。