【发布时间】:2013-11-18 19:10:46
【问题描述】:
在 VS 中,我有一个 sln,包括 2 个项目:
项目 A:
啊.h
#include <string>
extern bool flag;
A.cpp
#include "A.h"
bool flag = false;
void funcA()
{
int i = 0;
}
项目 B:
B.h
#include <stdio.h>
B.cpp
#include "B.h"
#include "..\ProjectA\A.h"
void main()
{
int j = 10;
flag = true;
std::cout << j << "\n" << flag ;
}
我将 projectA 设置为 DLL,将 projectB 设置为 EXE。
在链接中,出现错误:error LNK2001: unresolved external symbol "bool flag" (?flag@@3_NA)
是否应该在设置中手动将projectB指定为projectA?
谢谢。
【问题讨论】:
-
这是不好的做法。让 DLL 公开一个 get/set 方法来访问该值。
-
@Loki:这里没有应用程序边界,项目A是一个DLL,被加载到另一个的内存空间中。
-
@OldProgrammer:我也更喜欢只导出函数而不导出数据,但是函数也会出现同样的问题。
-
@OldProgrammer 只需要让它工作。我知道这样的全局变量不好。
标签: c++ variables global projects