I'm trying to compile a file that uses a modified library, however, I got the error of "Multiple definitions". All the declarations are in the .h (header) file, and the definitions are in the .c (source) file, so why is this happening? I'm using the Arduino Nano 33 BLE.
Here is the code, it is still incomplete.
#include "Contract_func.h"
#define WALLET_ADDRESS "0xa85226F5f26368C51A7Cc2Fd463F93a87398866f"
#define CONTRACT_ADDRESS "0x4D1927AC6473c9e8acbFb99953cD0e09e9940732"
string getSignedContract(char *num, uint32_t nonce)
{
TX tx;
/* If nonce is 0, set nonce string to NULL */
if (nonce) {
char buf[10];
sprintf(buf,"%x",nonce);
tx.nonce = string("0x") + buf;
}
else {
tx.nonce = "";
}
tx.gasPrice = "0x49504f80"; // "1230000000";
tx.gasLimit = "0x6acfc0"; // 7000000
tx.to = CONTRACT_ADDRESS;
tx.value = "";
string funct = "store(uint256)";
tx.data = SetupContractData_char(funct, num);
tx.chainId = "0x00aa36a7"; // chain id = 11155111 for Sepolia testnet
tx.v = "";
tx.r = "";
tx.s = "";
Serial.println(String(tx.data.c_str()));
string signed_tx = string("0x") + signTransaction(tx);
return signed_tx;
}
void setup() {
Serial.begin(9600);
while(!Serial);
Serial.println("Preparing contract");
getSignedContract("200", 1);
Serial.println("Contract is signed");
}
void loop() {
}
Here are the errors.
Arduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Board: "Arduino Nano 33 BLE"
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(uECC.o): In function `uECC_sign_deterministic':
uECC.c:(.text.uECC_sign_deterministic+0x0): multiple definition of `uECC_sign_deterministic'
libraries\library\myuECC.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/myuECC.c:1433: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha256_alt.o): In function `mbedtls_sha256_init':
sha256_alt.c:(.text.mbedtls_sha256_init+0x0): multiple definition of `mbedtls_sha256_init'
libraries\library\sha256.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha256.c:80: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha256_alt.o): In function `mbedtls_sha256_free':
sha256_alt.c:(.text.mbedtls_sha256_free+0x0): multiple definition of `mbedtls_sha256_free'
libraries\library\sha256.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha256.c:85: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha256_alt.o): In function `mbedtls_sha256_clone':
sha256_alt.c:(.text.mbedtls_sha256_clone+0x0): multiple definition of `mbedtls_sha256_clone'
libraries\library\sha256.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha256.c:93: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(hash_wrappers.o): In function `mbedtls_sha256_starts':
hash_wrappers.c:(.text.mbedtls_sha256_starts+0x0): multiple definition of `mbedtls_sha256_starts'
libraries\library\sha256.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha256.c:102: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(hash_wrappers.o): In function `mbedtls_sha256_update':
hash_wrappers.c:(.text.mbedtls_sha256_update+0x0): multiple definition of `mbedtls_sha256_update'
libraries\library\sha256.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha256.c:244: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(hash_wrappers.o): In function `mbedtls_sha256_finish':
hash_wrappers.c:(.text.mbedtls_sha256_finish+0x0): multiple definition of `mbedtls_sha256_finish'
libraries\library\sha256.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha256.c:288: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_list':
md.c:(.text.mbedtls_md_list+0x0): multiple definition of `mbedtls_md_list'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:97: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_info_from_string':
md.c:(.text.mbedtls_md_info_from_string+0x0): multiple definition of `mbedtls_md_info_from_string'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:100: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_info_from_type':
md.c:(.text.mbedtls_md_info_from_type+0x0): multiple definition of `mbedtls_md_info_from_type'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:141: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_init':
md.c:(.text.mbedtls_md_init+0x0): multiple definition of `mbedtls_md_init'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:183: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_free':
md.c:(.text.mbedtls_md_free+0x0): multiple definition of `mbedtls_md_free'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:187: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_clone':
md.c:(.text.mbedtls_md_clone+0x0): multiple definition of `mbedtls_md_clone'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:205: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_setup':
md.c:(.text.mbedtls_md_setup+0x0): multiple definition of `mbedtls_md_setup'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:226: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_init_ctx':
md.c:(.text.mbedtls_md_init_ctx+0x0): multiple definition of `mbedtls_md_init_ctx'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:221: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_starts':
md.c:(.text.mbedtls_md_starts+0x0): multiple definition of `mbedtls_md_starts'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:249: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_update':
md.c:(.text.mbedtls_md_update+0x0): multiple definition of `mbedtls_md_update'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:259: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_finish':
md.c:(.text.mbedtls_md_finish+0x0): multiple definition of `mbedtls_md_finish'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:269: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md':
md.c:(.text.mbedtls_md+0x0): multiple definition of `mbedtls_md'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:280: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_hmac_starts':
md.c:(.text.mbedtls_md_hmac_starts+0x0): multiple definition of `mbedtls_md_hmac_starts'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:331: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_hmac_update':
md.c:(.text.mbedtls_md_hmac_update+0x0): multiple definition of `mbedtls_md_hmac_update'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:370: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_hmac_finish':
md.c:(.text.mbedtls_md_hmac_finish+0x0): multiple definition of `mbedtls_md_hmac_finish'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:380: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_hmac_reset':
md.c:(.text.mbedtls_md_hmac_reset+0x0): multiple definition of `mbedtls_md_hmac_reset'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:399: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_hmac':
md.c:(.text.mbedtls_md_hmac+0x0): multiple definition of `mbedtls_md_hmac'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:416: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_process':
md.c:(.text.mbedtls_md_process+0x0): multiple definition of `mbedtls_md_process'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:438: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_get_size':
md.c:(.text.mbedtls_md_get_size+0x0): multiple definition of `mbedtls_md_get_size'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:449: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_get_type':
md.c:(.text.mbedtls_md_get_type+0x0): multiple definition of `mbedtls_md_get_type'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:457: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(md.o): In function `mbedtls_md_get_name':
md.c:(.text.mbedtls_md_get_name+0x0): multiple definition of `mbedtls_md_get_name'
libraries\library\md.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/md.c:465: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha256.o): In function `mbedtls_sha256':
sha256.c:(.text.mbedtls_sha256+0x0): multiple definition of `mbedtls_sha256'
libraries\library\sha256.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha256.c:325: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha512.o): In function `mbedtls_sha512_init':
sha512.c:(.text.mbedtls_sha512_init+0x0): multiple definition of `mbedtls_sha512_init'
libraries\library\sha512.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha512.c:141: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha512.o): In function `mbedtls_sha512_free':
sha512.c:(.text.mbedtls_sha512_free+0x0): multiple definition of `mbedtls_sha512_free'
libraries\library\sha512.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha512.c:146: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha512.o): In function `mbedtls_sha512_clone':
sha512.c:(.text.mbedtls_sha512_clone+0x0): multiple definition of `mbedtls_sha512_clone'
libraries\library\sha512.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha512.c:154: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha512.o): In function `mbedtls_sha512_starts':
sha512.c:(.text.mbedtls_sha512_starts+0x0): multiple definition of `mbedtls_sha512_starts'
libraries\library\sha512.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha512.c:163: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha512.o): In function `mbedtls_sha512_process':
sha512.c:(.text.mbedtls_sha512_process+0x0): multiple definition of `mbedtls_sha512_process'
libraries\library\sha512.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha512.c:196: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha512.o): In function `mbedtls_sha512_update':
sha512.c:(.text.mbedtls_sha512_update+0x0): multiple definition of `mbedtls_sha512_update'
libraries\library\sha512.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha512.c:274: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha512.o): In function `mbedtls_sha512_finish':
sha512.c:(.text.mbedtls_sha512_finish+0x0): multiple definition of `mbedtls_sha512_finish'
libraries\library\sha512.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha512.c:321: first defined here
C:\Users\suiyu\OneDrive\Documents\ArduinoData\packages\arduino\hardware\mbed_nano\4.0.2\variants\ARDUINO_NANO33BLE/libs/libmbed.a(sha512.o): In function `mbedtls_sha512':
sha512.c:(.text.mbedtls_sha512+0x0): multiple definition of `mbedtls_sha512'
libraries\library\sha512.c.o:C:\Users\suiyu\OneDrive\Documents\Arduino\libraries\library/sha512.c:360: first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino Nano 33 BLE.
I wanted to attach the library here but it seems that I can't because I'm a new user. But here are the links for the libraries I acquired.