2012-02-08 24 views
0

Visual Studio、.NET、Windowsを使用しています。静的ライブラリを管理するC++ラッパー

私は静的ライブラリの周りにラッパーを作成しています。私は助けが必要な問題は、エラーメッセージが表示されます。

はLINK:致命的なエラーLNK1104は:「Unmanaged.lib」

「非管理」、開いているファイルは私のプロジェクト内のクラスですが、それができませんプロジェクトの名前ではありません。

私はC++ CLRクラスライブラリプロジェクトを作成しました。その中で私は管理クラスとアンマネージクラスを作成しました。アンマネージクラスは静的ライブラリを呼び出します。マネージクラスはアンマネージクラスを使用します。コンパイラとリンカは、アンマネージクラスのライブラリを作成しようとしているようですが、それは何が起こるべきではありません。

管理対象クラスライブラリプロジェクトで管理対象クラスのみを使用することはできますか。私はそう思うが、もし私が間違っていれば、私がやろうとしていることがうまくいかないことを知る時間を節約するだろう。

+3

「リンカ - >入力 - >追加の依存関係」に「Unmanaged.lib」はありませんか?そうでない場合は、#pragma comment(lib、 "Unmanaged.lib")を検索してください。 – gwiazdorrr

+1

したがって、管理対象アセンブリにリンクする静的ライブラリがあります。それはどこにありますか?その名前は何ですか?おそらく 'unmanaged.lib'ではないでしょう、それは珍しいでしょう。 –

+0

リンカのエラーを見て、私はプロジェクトが静的なlibでもCLRプロジェクトでもないと推測しています。詳細が必要です。 –

答えて

1

初めてマネージコードを書くようになったばかりで、アンマネージドクラスのライブラリを使用する方法を理解していました。しかし、私はそれを行う一つの方法を考え出しました。そして、同じライブラリ内で管理クラスと非管理クラスを持つことができます。私の場合は複雑ですが、私のアンマネージドコードはVS2008でコンパイルするだけですが、管理コードはVS2010でコンパイルするだけです。だからここに私がやったことだ:

  1. はVS2008を使用して静的ライブラリに、いつものように私のアンマネージコードを構築しました。これは、VS 2010でMyUnmanagedClasses.lib

  2. を生成し、右私は最初のボックスでアンマネージコード

  3. 選択リンカ/入力

  4. を使用したい(管理)プロジェクト/プロパティ]をクリックします"追加の依存"、 "追加のライブラリディレクトリ" BにMyUnmanagedClasses.lib

  5. 選択リンカ/一般

  6. を追加ox、MyUnmanagedClasses.libが置かれているディレクトリを追加してください。

  7. いつものようにアンマネージドクラスを使用してください!

注:アンマネージドプロジェクト自体をソリューションに追加しないでください。これは最初に試したもので、動作しませんでした。上記のようにライブラリにリンクするだけです。

+1

VC2008でコンパイルされたネイティブコードはありますが、VC2010ではコンパイルできませんか?これは非常に悪い兆候であり、通常、2008年から2010年の間に適合性が改善されたため、コードのバグを示しています。 –

関連する問題