В VS у меня есть SLN, включая 2 проекта:
Проект А:
хиджры
#include <string>
extern bool flag;
a.cpp
#include "A.h"bool flag = false;
void funcA()
{
int i = 0;
}
Проект Б:
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.
При связывании получаю ошибку: ошибка LNK2001: неразрешенный внешний символ «флаг bool» (? Flag @@ 3_NA)
Должен ли я вручную указать projectB для projectA в настройках?
Спасибо.
Как это:
хиджры
#ifndef LIBA_API
#define LIBA_API __declspec(dllimport)
#endif
extern LIBA_API bool flag;
a.cpp
#define LIBA_API __declspec(dllexport)
#include "A.h"LIBA_API bool flag = false;
void funcA()
{
int i = 0;
}
(не нужно никаких изменений B.h
или же B.cpp
)
Других решений пока нет …