プロが教える店舗&オフィスのセキュリティ対策術

pickit3 レッスンプログラムが動作しません

pickit3 に付属していたサンプルプログラム レッスン 01 Hello LED をビルドしましたが
下記のエラーが表示されます。

解決方法がわかる方、よろしくお願いします

----------------------------------------------------------------------
Release build of project `D:\PIC\PICkit 3 Debug Express Lessons\01 Hello LED\Lesson 1 LED.mcp' started.
Language tool versions: mpasmwin.exe v5.35, mplink.exe v4.35, mcc18.exe v3.35
Thu May 27 16:30:30 2010
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "D:\PIC\PICkit 3 Debug Express Lessons\01 Hello LED\01 Hello LED.o".
Clean: Done.
Executing: "C:\Program Files\Microchip\MCC18\bin\mcc18.exe" -p=18F45K20 "01 Hello LED.c" -fo="01 Hello LED.o" -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
MPLAB C18 v3.35 (evaluation)
Copyright 2000-2010 Microchip Technology Inc.
Days remaining until evaluation becomes feature limited: 60
Executing: "C:\Program Files\Microchip\MCC18\bin\mplink.exe" /l"C:\MCC18\lib" "C:\Program Files\Microchip\MPASM Suite\LKR\18F45k20.lkr" "01 Hello LED.o" /u_CRUNTIME /z__MPLAB_BUILD=1 /o"Lesson 1 LED.cof" /M"Lesson 1 LED.map" /W
MPLINK 4.35, Linker
Copyright (c) 1998-2010 Microchip Technology Inc.
Error - could not find definition of symbol 'TRISD' in file './01 Hello LED.o'.
Errors : 1

Link step failed.
----------------------------------------------------------------------
Release build of project `D:\PIC\PICkit 3 Debug Express Lessons\01 Hello LED\Lesson 1 LED.mcp' failed.
Language tool versions: mpasmwin.exe v5.35, mplink.exe v4.35, mcc18.exe v3.35
Thu May 27 16:30:31 2010
----------------------------------------------------------------------
BUILD FAILED

A 回答 (2件)

 今度は「Delay10TCYxというシンボルが見付からない」というリンクエラーが出ています。

同じように見直してみてください。

> このエラーは、delays.h がリンクされていればOKなんだと思うのですが、、ほかになにかあるのでしょうか?

 一般的にヘッダファイルでは外部参照やマクロが宣言されているだけで、実体は別に定義されています。コンパイラは宣言だけで参照の有効(というか、その参照のデータ型が正しく使われているか)を判定しますが、実体があるかどうかは判定しません。なぜなら、コンパイラはソースコードをオブジェクトファイルというコンポーネントに変換するだけで、実行ファイルそのものを作るわけではないからです。
 複数のオブジェクトファイルや、それを集めたライブラリファイルを結合し、メモリロケーションを決めて実行ファイルを作るのがリンカです。この時に参照されているシンボルの実体があるかどうかがチェックされます。実態がなければ結合出来ないからです。
 したがって、ソースコード自身に実体の定義が無く、ヘッダファイルでは参照の宣言だけがなされているシンボルはライブラリとして提供されている可能性が高いと思われます。

 今回、コンパイラでのエラーではなくリンカでのエラーが出ているので、参照の宣言は正しく取り込めているけど、実体を定義したライブラリがリンクされていないと考えるのが妥当だと考えられます。
    • good
    • 0
この回答へのお礼

解決しました^^
わかりやすい説明、ありがとうございました。
レッスン1と見比べてもリンク設定に違いは無く、悩んでいたのですが
ファイル名がちがうことに気づき、ホルダーを

C:\mcc18\lkr\
から

C:\MCC18\bin\LKR
に変更し、
ファイルを
18f45K20i.lkr から、 18f45k20_g.lkr に変更することで
正常に動作しました。

しかし、レッスンといいつつ、こんなに設定変更が必要ってどうなんでしょう
ファイル名も勝手に替えて良いのかな^^;

でも、おかげさまで コンパイルのことがよくわかりました。
ありがとうございました。

お礼日時:2010/05/28 09:38

エラー内容は「TRISDというシンボルが見付からない」というリンクエラーです。



ソースまたはインクルードファイル内でTRISDの有効な実体が定義されていないか、実体を定義したライブラリファイルがリンクされていないかというところだと思います。

この回答への補足

ありがとうございます
ご指摘のようにリンクが切れていたため、.h 、.lkr ファイルを再設定で動作しました。

レッスン1、2,3 は、設定変更で動作したのですが、
レッスン04では、ホルダーを設定してもエラーとなります。

このエラーは、delays.h がリンクされていればOKなんだと思うのですが、、
ほかになにかあるのでしょうか?

----------------------------------------------------------------------
Release build of project `D:\PIC\PICkit 3 Debug Express Lessons\04 Switch Input\04 Switch Input.mcp' started.
Language tool versions: mpasmwin.exe v5.35, mplink.exe v4.35, mcc18.exe v3.35
Thu May 27 21:16:13 2010
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "D:\PIC\PICkit 3 Debug Express Lessons\04 Switch Input\04 Switch Input.o".
Clean: Deleted file "D:\PIC\PICkit 3 Debug Express Lessons\04 Switch Input\04 Switch Input.mcs".
Clean: Done.
Executing: "C:\Program Files\Microchip\MCC18\bin\mcc18.exe" -p=18F45K20 "D:\PIC\PICkit 3 Debug Express Lessons\04 Switch Input\04 Switch Input.c" -fo="04 Switch Input.o" -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
MPLAB C18 v3.35 (evaluation)
Copyright 2000-2010 Microchip Technology Inc.
Days remaining until evaluation becomes feature limited: 60
Executing: "C:\Program Files\Microchip\MCC18\bin\mplink.exe" /l"C:\Program Files\Microchip\MCC18\lib" "C:\Program Files\Microchip\MPASM Suite\LKR\18f45k20i.lkr" "04 Switch Input.o" /u_CRUNTIME /z__MPLAB_BUILD=1 /o"04 Switch Input.cof" /M"04 Switch Input.map" /W
MPLINK 4.35, Linker
Copyright (c) 1998-2010 Microchip Technology Inc.
Error - could not find definition of symbol 'Delay10TCYx' in file './04 Switch Input.o'.
Errors : 1

Link step failed.
----------------------------------------------------------------------
Release build of project `D:\PIC\PICkit 3 Debug Express Lessons\04 Switch Input\04 Switch Input.mcp' failed.
Language tool versions: mpasmwin.exe v5.35, mplink.exe v4.35, mcc18.exe v3.35
Thu May 27 21:16:13 2010
----------------------------------------------------------------------
BUILD FAILED

補足日時:2010/05/27 21:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!