質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

解決済

Arduino ボードESP32 Dev Moduleに対するコンパイル時にエラーが発生しました

raspypy
raspypy

総合スコア236

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

3回答

0評価

0クリップ

4218閲覧

投稿2021/04/06 00:51

##困っていること
Arduino IDE (Windows10 PC)にて,ESP32に書き込むプログラムのコンパイルをしています.
プログラムと,ヘッダーファイルを末尾に添付します.

このプログラムをコンパイルすると,次のエラーが出てきてしまいます.
原因が分からずこまっています.

text

sketch\Test3.ino.cpp.o:(.literal._Z5setupv+0x14): undefined reference to `ESP32_BME280_I2C::ESP32_BME280_I2C_Init(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)' sketch\Test3.ino.cpp.o:(.literal.startup._GLOBAL__sub_I_bme280i2c+0x8): undefined reference to `ESP32_BME280_I2C::ESP32_BME280_I2C(unsigned char, unsigned char, unsigned char, unsigned int)' sketch\Test3.ino.cpp.o:(.literal._Z7bme_getv+0x1c): undefined reference to `ESP32_BME280_I2C::Read_All(double*, double*, double*)' sketch\Test3.ino.cpp.o: In function `setup()': C:\Users\PLC\Documents\Arduino\Program\Test3\Test3/Test3.ino:48: undefined reference to `ESP32_BME280_I2C::ESP32_BME280_I2C_Init(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)' sketch\Test3.ino.cpp.o: In function `_GLOBAL__sub_I_bme280i2c': C:\Users\PLC\Documents\Arduino\Program\Test3\Test3/Test3.ino:48: undefined reference to `ESP32_BME280_I2C::ESP32_BME280_I2C(unsigned char, unsigned char, unsigned char, unsigned int)' sketch\Test3.ino.cpp.o: In function `bme_get()': C:\Users\PLC\Documents\Arduino\Program\Test3\Test3/Test3.ino:35: undefined reference to `ESP32_BME280_I2C::Read_All(double*, double*, double*)' collect2.exe: error: ld returned 1 exit status exit status 1 ボードESP32 Dev Moduleに対するコンパイル時にエラーが発生しました。

##プログラム

c++

#include "ESP32_BME280_I2C.h" const uint8_t Address = 0x76; const uint8_t sda = 12; const uint8_t scl = 14; const uint32_t frequency = 30000; ESP32_BME280_I2C bme280i2c(Address, scl, sda, frequency); void setup(){ Serial.begin(115200); delay(1000); //Take some time to open up the Serial Monitor //Example Indoor navigation uint8_t t_sb = 0; //stanby 0.5ms uint8_t filter = 4; //IIR filter = 16 uint8_t osrs_t = 2; //OverSampling Temperature x2 uint8_t osrs_p = 5; //OverSampling Pressure x16 uint8_t osrs_h = 1; //OverSampling Humidity x1 uint8_t Mode = 3; //Normal mode bme280i2c.ESP32_BME280_I2C_Init(t_sb, filter, osrs_t, osrs_p, osrs_h, Mode); delay(1000); } void loop(){ bme_get(); delay(5000); } //************** BME280 measure ************************* void bme_get(){ double temperature, pressure, humidity; bme280i2c.Read_All(&temperature, &pressure, &humidity); char temp_c[10], hum_c[10], pres_c[10]; sprintf(temp_c, "%2.2lf", temperature); sprintf(hum_c, "%2.2lf", humidity); sprintf(pres_c, "%4.2lf", pressure); Serial.println("-----------------------"); Serial.print("Temperature = "); Serial.println(temp_c); Serial.print("Humidity = "); Serial.println(hum_c); Serial.print("Pressure = "); Serial.println(pres_c); Serial.println("-----------------------"); Serial.flush(); }

##Header

c++

/* ESP32_BME280_I2C.h - for Arduino core for ESP32 Beta version 1.2 License MIT [Modified person is Mgo-tec.] Reference SWITCH SCIENCE page URL: http://trac.switch-science.com/wiki/BME280 Reference library: https://github.com/adafruit/Adafruit_BME280_Library Original License is BSD [Copyright (c) 2012, Adafruit Industries] BSD License: Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef ESP32_BME280_I2C_h_ #define ESP32_BME280_I2C_h_ #include "Arduino.h" #include "Wire.h" class ESP32_BME280_I2C { public: ESP32_BME280_I2C(uint8_t bme280_address, uint8_t scl, uint8_t sda, uint32_t freq); void ESP32_BME280_I2C_Init(uint8_t Stanby_t, uint8_t filter, uint8_t overS_T, uint8_t overS_P, uint8_t overS_H, uint8_t mode); void WriteRegister(uint8_t reg_address, uint8_t data); void ReadCalibration(void); double Read_Temperature(); double Read_Pressure(); double Read_Humidity(); void Read_All(double *temp, double *press, double *hum); double ReadAltitude(double SeaLevel_Pres, double pressure); int32_t compensate_T(int32_t adc_T); double compensate_T_double(int32_t adc_T); uint32_t compensate_P(int32_t adc_P); double compensate_P_double(int32_t adc_P); uint32_t compensate_H(int32_t adc_H); double compensate_H_double(int32_t adc_H); uint16_t read16bit(uint8_t reg); uint8_t read8bit(uint8_t reg); private: uint8_t _bme280_addres; uint8_t _scl, _sda; uint32_t _freq; int32_t _t_fine; uint16_t _dig_T1; int16_t _dig_T2; int16_t _dig_T3; uint16_t _dig_P1; int16_t _dig_P2; int16_t _dig_P3; int16_t _dig_P4; int16_t _dig_P5; int16_t _dig_P6; int16_t _dig_P7; int16_t _dig_P8; int16_t _dig_P9; uint8_t _dig_H1; int16_t _dig_H2; uint8_t _dig_H3; int16_t _dig_H4; int16_t _dig_H5; int8_t _dig_H6; }; #endif

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。