Ich bin mir bewusst, dass diese Frage schon mehrmals gestellt wurde, aber ich kann das nicht funktionieren. Für einen speziellen Fall muss ich eine globale Struktur haben, die in einer Datei gefüllt und in einer anderen gelesen wird.Global struct C++
Der folgende Code gibt mir einen Verknüpfungsfehler:
Undefined symbols for architecture x86_64:
"_camera_data", referenced from:
MyCameraData::return_sensor_shift() in extra-424af5.o
ld: symbol(s) not found for architecture x86_64
clang-5.0: error: linker command failed with exit code 1 (use -v to see invocation)
common.h:
#ifndef COMMON_H
#define COMMON_H
struct MyCameraData
{
float sensor_shift;
float return_sensor_shift();
};
extern MyCameraData camera_data;
#endif
main.cpp:
#include "common.h"
#include <iostream>
int main(){
MyCameraData camera_data;
camera_data.sensor_shift = 5.0;
std::cout << camera_data.return_sensor_shift() << std::endl;
}
extra.cpp:
#include "common.h"
float MyCameraData::return_sensor_shift(){
return camera_data.sensor_shift;
}
Da muss etwas sein, das ich übersehe. Irgendwelche Ideen?
Sie haben 'camera_data' als' extern' deklariert, was bedeutet "vertraue mir, es ist an anderer Stelle definiert". Aber du hast es nirgends definiert. –
Mögliches Duplikat von [Was ist ein undefinierter Verweis/ungelöster externer Symbolfehler und wie behebe ich ihn?] (Https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-) symbol-error-and-how-do-i-fix) – user0042
Prost, das war es. Anfängerfehler! –