Multiple definitions

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.

Do you have "test" files in the sketch folder? If so, the compiler might be trying to include them.

I removed the test files before adding the libraries.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.