- 締切済み
CLIでのライブラリのリンク方法について
VS2003のManagedC++では簡単にすることができたネイティブなライブラリを、VS2005のC++/CLIで利用することができません。 VS2003では、ファイルのインクルード、インクルードパスの追加、ライブラリのリンク、ライブラリパスの追加を行うと正しくリンクすることができたライブラリを、同じ方法でリンクしようとすると、VS2005ではコンパイルに失敗します。 ネイティブなライブラリをリンクするので、/clr:pureモードではなく、/clrモードにすればできると思い、試してみたのですが、 error LNK1314: COFF シンボル テーブルが壊れているか、または無効です。未定義のスタティック シンボルまたはラベル シンボルです。 というエラーが起きてコンパイルすることができません。 clrモードのほかに何か設定すべき項目があるのでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- YoxoY
- ベストアンサー率42% (43/101)
すみません。 商用ライブラリの場合には通常、メーカーサポートと話をして解決する。 この質問では、購入したライブラリとは記されていなかった。 という事で、ソースが手に入るのかと思ってしまいました。 情報は小出しになさらない方がよろしいかと存じます。 私は、同じソースをバージョンの違うVisual C++でビルドして、 また、同じバージョンのVCでPlatform SDKを導入してビルドして、 バイナリ比較をしてみたことがあります。 結果はリンク日時とチェックサム以外も異なったりしました。 インクルードされる提供されているファイルでの定義番号が 違ってくるからです。 可能であるならば、同じ環境でビルドして用いるべきです。 まあ、可能であれば、です。
- YoxoY
- ベストアンサー率42% (43/101)
そのライブラリ自体をVS2005でビルドし直す必要があると思います。
補足
回答ありがとうございます。 本当にそうでしょうか?私もあまりライブラリに詳しくはない(だから質問しているのですが)ので、よくわかりませんが、ライブラリファイルとVisualStudioのバージョンにはあまり関係はないような気がするのですがどうでしょうか。 ちなみに、現在プログラムにリンクできなくて困っているライブラリは、IntelのMKLなのですが、VS2005でもネイティブなプログラムからはリンクができるのは確認しています。また、ライブラリ自体が商品として発売されているので、ビルドしなおすというのは不可能です。 本当にビルドしなおす必要があるというのであれば、その理由は何なのでしょうか。