- ベストアンサー
pickit3のレッスンプログラムが動作しないエラーの解決方法を教えてください
- pickit3のレッスンプログラムがビルド時にエラーが発生してしまいます。
- エラーの内容は、ファイル内で'symbol 'TRISD'の定義が見つからない'です。
- 解決方法を知っている方、助けてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
今度は「Delay10TCYxというシンボルが見付からない」というリンクエラーが出ています。同じように見直してみてください。 > このエラーは、delays.h がリンクされていればOKなんだと思うのですが、、ほかになにかあるのでしょうか? 一般的にヘッダファイルでは外部参照やマクロが宣言されているだけで、実体は別に定義されています。コンパイラは宣言だけで参照の有効(というか、その参照のデータ型が正しく使われているか)を判定しますが、実体があるかどうかは判定しません。なぜなら、コンパイラはソースコードをオブジェクトファイルというコンポーネントに変換するだけで、実行ファイルそのものを作るわけではないからです。 複数のオブジェクトファイルや、それを集めたライブラリファイルを結合し、メモリロケーションを決めて実行ファイルを作るのがリンカです。この時に参照されているシンボルの実体があるかどうかがチェックされます。実態がなければ結合出来ないからです。 したがって、ソースコード自身に実体の定義が無く、ヘッダファイルでは参照の宣言だけがなされているシンボルはライブラリとして提供されている可能性が高いと思われます。 今回、コンパイラでのエラーではなくリンカでのエラーが出ているので、参照の宣言は正しく取り込めているけど、実体を定義したライブラリがリンクされていないと考えるのが妥当だと考えられます。
その他の回答 (1)
- magicalpass
- ベストアンサー率58% (378/648)
エラー内容は「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
お礼
解決しました^^ わかりやすい説明、ありがとうございました。 レッスン1と見比べてもリンク設定に違いは無く、悩んでいたのですが ファイル名がちがうことに気づき、ホルダーを C:\mcc18\lkr\ から C:\MCC18\bin\LKR に変更し、 ファイルを 18f45K20i.lkr から、 18f45k20_g.lkr に変更することで 正常に動作しました。 しかし、レッスンといいつつ、こんなに設定変更が必要ってどうなんでしょう ファイル名も勝手に替えて良いのかな^^; でも、おかげさまで コンパイルのことがよくわかりました。 ありがとうございました。