2011-08-13 12 views
0

私はレガシーアプリケーションで使用したいマネージドDLLを持っています。私が行っている手順はこれまでのところ、このガイドをTに従っています。 How to call a managed DLL from native Visual C++ code in Visual Studio.NET or in Visual Studio 2005ネイティブVC++ 6アプリケーションで管理されたDLL

私は、DLLの強力な名前を作成し、.tlbファイルを生成し、それを私のC++コードにインポートしました。それで、intellisenseはクラス(そしてクラスへのポインタ) 「それを呼び出すM、それをコンパイルした後、私は、このリンカエラーを受け取る:

Test.tlb : fatal error LNK1136: invalid or corrupt file. 

それは私のCかもしれ++プロジェクトが間違って設定されている、もともと私は目を受け取りましたe "fatal error LNK1181: Cannot open input file 'Test.tlb' "私がソリューション/プロジェクトを含むディレクトリに移動するまで。

原因を知っている人はいますか?

+0

VC++ 6は1998年のもので、2002年に最初の.NETリリースが行われました。私はそれができるとは確信していません... – user786653

+0

TLBはCOMですが、それは言語的に中立的でVC6より前です。 1996年にコード_compiled_で動作する.Net COMコードを書くことができます! – MSalters

答えて

1

はい、プロジェクトの設定が間違っています。リンカーのAdditional Dependencies設定に.tlbファイルを追加したようです。それは正しくない、リンク可能なコードを含んでいない。 #importディレクティブのみが理解できる形式での宣言のみが含まれています。

リンカー設定からtest.tlbを削除します。

+0

これはまさにそれでした。ありがとうございました ! – kogh

関連する問題