I try to create a simple project where i am using two variables which is common across my whole project.
But when I try to compile i get the following error
CMakeFiles\stage.dir/objects.a(utilities.cpp.obj):utilities.cpp:(.bss+0x0): multiple definition of `error'
CMakeFiles\stage.dir/objects.a(main.cpp.obj):main.cpp:(.bss+0x0): first defined here
CMakeFiles\stage.dir/objects.a(utilities.cpp.obj):utilities.cpp:(.bss+0x8): multiple definition of `con'
CMakeFiles\stage.dir/objects.a(main.cpp.obj):main.cpp:(.bss+0x8): first defined here
CMakeFiles\stage.dir/objects.a(utilities.cpp.obj):utilities.cpp:(.bss+0x10): multiple definition of `value'
CMakeFiles\stage.dir/objects.a(main.cpp.obj):main.cpp:(.bss+0x10): first defined here
collect2.exe: error: ld returned 1 exit status
I try to use error and con variable across multiple files. here is my actual code of all files.
Main.cpp
#include "utilities.h"
#include <iostream>
#include <windows.h>
void connect() {
int errorStatus = serverConnect (49152,"localhost");
std::cout << "Error Message:" << errorStatus << std::endl;
Sleep(1000);
}
Utilities.h
#include "iec61850_client.h"
#include <iostream>
IedClientError error;
IedConnection con;
MmsValue* value;
Utilities.cpp
#include "utilities.h"
int serverConnect(int tcpPort, string hostname) {
con = IedConnection_create();
IedConnection_connect(con, &error, hostname.c_str(), tcpPort);
return error;
}
What i try to do with above code is I defined variables error and con in my utilities.h file and included in utilities.cpp though am using in it and also i have included utilities.h in my main.cpp
I know what is happening utilities.h has been included in main.cpp and well as in utilities.cpp but how to overcome this.
Cmake
set(EXECUTABLES
main.cpp
models/utilities.cpp
)
add_executable(stage ${EXECUTABLES} )
include_directories(
${CMAKE_CURRENT_LIST_DIR}/headers
${CMAKE_CURRENT_LIST_DIR}/models
)