VC5からVC6へ移行時の問題 – プログラミング – Home

VC5からVC6へ移行時の問題
 
通知
すべてクリア

VC5からVC6へ移行時の問題


ノブ
 ノブ
(@ノブ)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

はじめて質問させていただきます。

当方、これまでVC5を使ったCプログラムを作成していたのですが、
やっと重い腰を上げて、VC6に移行しようと考えたのですが、
以下のようなエラーが発生して、ビルドが通りません。
何かご存知の方おられましたら、アドバイスお願いします。

AAA.obj : error LNK2001: 外部シンボル _BBB は未解決です
CCC.lib(DDD.obj) : error LNK2001: 外部シンボル _EEE は未解決です

プログラムの構成としましては、自作のCのいくつかのlibを、
リンクしているCプログラムなのですが、自作のlibのリンクが
全てエラーとなってしまっているようです。
VC5の時から何も変更をしていないのですが、
何か変更が必要なのでしょうか。

よろしくお願いします。


引用解決済
トピックタグ
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

とりあえず、リンクに関する設定をやり直してからリビルドしてみてください。


返信引用
ノブ
 ノブ
(@ノブ)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

tib様、さっそくのご回答ありがとうございます。
リンク設定のやり直し、および、プロジェクトファイルの
再作成を行ったのですが、現象変わりませんでした。

環境を忘れていましたので、報告します。
Windows2000、VC6.0(SP5)です


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

CでコンパイルしたlibのヘッダーをC++のソースにincludeしていませんか?


返信引用
ノブ
 ノブ
(@ノブ)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

dairygoods様、ご回答ありがとうごさいます。

当方、C++を知らないもので、全てCのみのソースコードで、
C++は使っておりません。


返信引用
HEARTS
 HEARTS
(@HEARTS)
ゲスト
結合: 23年前
投稿: 21
 

debugのプロジェクト設定で
ライブラリのリンクを設定して
releaseでビルドしてるとか。


返信引用
ノブ
 ノブ
(@ノブ)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

HERTS様 ご回答ありがとうございます。

ご指摘の件、確認致しましたが、問題ありませんでした。
もともと、VC5では(debug、release問わず)ビルドが
通っておりますので、設定等にミスは、無いと思っております。


返信引用
てつや
 てつや
(@てつや)
ゲスト
結合: 22年前
投稿: 34
 

libへのパスは通っていますか?

ツール
→オプション→ディレクトリタブ
→表示するディレクトリをライブラリファイルに変更
→下のリストにlibへのパスを通す


返信引用
ノブ
 ノブ
(@ノブ)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

てつや 様 ご回答ありがとうございます。

ご指摘の件、ライブラリファイルの設定欄に、今回のlibのパスは通っております。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 23年前
投稿: 196
 

lib を VC6 でビルドしなおしてないとか?


返信引用
ノブ
 ノブ
(@ノブ)
ゲスト
結合: 22年前
投稿: 6
Topic starter  

渋木宏明(ひどり) 様、ご回答ありがとうございます。

libは、VC6でコンパイルしなおしております。
libは、問題無くコンパイルできたので、exeも大丈夫かなと
思ったのですが、何か違いがあるようです。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

ふと気になったのですが、
Cのソースと言うのは、ソース上Cの関数しか呼んでいないという事で
コンパイラがCのソースとしてコンパイルしているわけはないという事はないでしょ
うか?
Cのソースであれば、C++としてコンパイルしても通ってしまいそうな気がするですが。
Cとしてコンパイルさせるための設定とかソースファイルの拡張子を.cでしている等々
をされているのでしょうか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

> Cとしてコンパイルさせるための設定とかソースファイルの拡張子を.cでしている等々
> をされているのでしょうか?

あるいはライブラリのヘッダに:

#ifdef __cplusplus
extern C {
#endif

...

#ifdef__cplusplus
}
#endif

ってなオマジナイが唱えられているか、とか。


返信引用
ちぇっく
 ちぇっく
(@ちぇっく)
ゲスト
結合: 22年前
投稿: 5
 

>ツール
> →オプション→ディレクトリタブ
> →表示するディレクトリをライブラリファイルに変更
> →下のリストにlibへのパスを通す

これだけではライブラリへのパスを指定したことにしかなりません。
明示的に目的のライブラリファイルを指定する必要がありますが...

http://forums.belution.com/ja/vc/000/196/22s.shtml

この類の話は、やはり DUMPBIN.EXE でも使って理詰めで解決したほうが
いいと思います。
まず、関数名がライブラリ側(DUMPBINの出力)と呼び出し側(リンクエラーの出力)
で同じになっているかどうか。
・同じならパス指定ミス
・違っていればソースの記述ミス
違っている場合、どのように違っているかを見れば、
どう間違えているかもだいたい想像できますしね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました