c++ - variable_name的多个定义,这里先定义
问题描述
我尝试创建一个简单的项目,我在其中使用两个变量,这在我的整个项目中都很常见。
但是当我尝试编译时出现以下错误
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
我尝试在多个文件中使用 error 和 con 变量。这是我所有文件的实际代码。
主文件
#include "utilities.h"
#include <iostream>
#include <windows.h>
void connect() {
int errorStatus = serverConnect (49152,"localhost");
std::cout << "Error Message:" << errorStatus << std::endl;
Sleep(1000);
}
实用程序.h
#include "iec61850_client.h"
#include <iostream>
IedClientError error;
IedConnection con;
MmsValue* value;
实用程序.cpp
#include "utilities.h"
int serverConnect(int tcpPort, string hostname) {
con = IedConnection_create();
IedConnection_connect(con, &error, hostname.c_str(), tcpPort);
return error;
}
我试图用上面的代码做的是我在我的utilities.h文件中定义了变量error和con,并包含在utilities.cpp中,虽然我正在使用它,而且我已经在我的main.cpp中包含了utilities.h
我知道发生了什么实用程序.h 已包含在 main.cpp 和实用程序.cpp 中,但如何克服这一点。
制作
set(EXECUTABLES
main.cpp
models/utilities.cpp
)
add_executable(stage ${EXECUTABLES} )
include_directories(
${CMAKE_CURRENT_LIST_DIR}/headers
${CMAKE_CURRENT_LIST_DIR}/models
)
解决方案
推荐阅读
- xml - 通过 Datastage 发出提取 clob
- ruby - 'if' 语句在'for' 循环中不起作用
- python - 需要字段时将django表单初始值设置为空白
- angularjs - 从角度的输入字段中删除不需要的字符串
- javascript - 在每个下拉列表中选择元素并单击应用按钮后,使一系列下拉列表不起作用
- google-apps-script - 如何通过在表格Google AppScripts中传递范围来在单元格中显示公式
- java - 从 servlet 中的 html 表单中检索选择的标题
- angular - 更新角度、材料和引导程序后 ng 服务时出错
- javascript - Angular - 在复选框上添加事件
- python-3.x - Unable to query on Partition key in DyanmoDB by boto3