私は使用する必要のある関数宣言を含むtlbファイルを持っています。ネイティブC++プロジェクトでtlbファイルを使用する方法
私は
#import "type_library.tlb"
を使用している場合、私はcorreclty自分のコードから関数を参照することができます
tlb_namespace::required_function();
をしかし、私は、リンカがtlb_namespace :: required_functionは、未解決の外部シンボルであると言うプロジェクトをコンパイル。
この種のプロジェクトをどのようにして正常に構築できますか?
EDIT:
私はダミーVBA Accessプロジェクトで同じタイプライブラリを使用していました。タイプライブラリへの参照を追加しました。タイプライブラリに含まれる関数の一部が正しく呼び出されていることに気付きました。しかし、それらのうちのいくつかはそうではありません。 VBAによると、関連するDLLにエントリーポイントを見つけることはできません。
C++アプリケーションをビルドするときに未解決の外部シンボルについて説明できますか?
私は失敗した機能は、このようなTLBに宣言されていることも気づいています
UPPER_function_name
が、DLL内では、このように宣言されています
Upper_function_name
これが問題になることはできますか?
バイナリtlbファイルまたはdllを直接変更するこの種のエラーを解決することは可能ですか?
は 'の#import "type_library.tlb" で解決されます'あなたのプロジェクトの中でこのtlbの#importディレクティブだけです。それは関数呼び出しと同じcppにありますか?生成された.tlhファイルと.tliファイルに 'required_function'がどのように定義されていますか? –
@ZdeslavVojkovic今のところプロジェクトは非常に単純なものなので、#importは単なるもので、呼び出しの同じ.cppファイルにあります。私は.tlhと.tliファイルを生成しようとしました...プロジェクト\プロパティにプリプロセッサを生成する場合にのみ表示されます。しかし、私はおそらく別のリンカエラーが発生するので、私はおそらくプロジェクトに正しいモードでそれらを追加しないでください。 – sblandin
を追加する必要はありません。あなたのリリース/デバッグフォルダにビルド中に作成されるので、そこを見てください。 –