0

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
)
Vimalan E
  • 161
  • 10

0 Answers0