У меня есть два проекта VC++ внутри sln-файла в visual studio 2010. Я хочу использовать a_flag в файле другого проекта, возможно ли это, что я делаю ниже?ошибка LNK2001: нерешенный внешний символ
Проект 1:
**sample_header.h**
#ifndef SAMPLE_HEADER_API
#define SAMPLE_HEADER_API __declspec(dllimport)
#endif
extern SAMPLE_HEADER_API int a_flg;
**file1.cpp**
#define SAMPLE_HEADER_API __declspec(dllexport)
#include "sample_header.h"
// Intialization of external
int a_flag = 15;
void m_func()
{
int i = 0;
}
Проект 2:
**file2.h**
#include <stdio.h>
**file2.cpp**
#include "file1.h"
#include "sample_header.h"
// provided path of "sample_header.h" in additional include directory as well
void main()
{
if(a_flag > 0)
{
std::cout << "FLAG" ;
}
}
Я поставил project1 как DLL, проекта2 как проект EXE.
В связывании, я получаю эту ошибку:
error LNK2001: `unresolved external symbol "__declspec(dllimport) int a_flg" ([email protected]@3HA)` in file2.cpp
Я прочитал Microsoft Страница here о создании DLL и ссылки, но не знаю, как решить эту внешнюю ошибку символа.
Спасибо!
Вы связывая приложение с библиотекой импорта генерируемой с DLL? – drescherjm
Также получите 'extern SAMPLE_HEADER_API int a_flg;' из ifdefs, поэтому он экспортируется в dll. – drescherjm
Похоже, вы забыли добавить '.lib' из Project1 в линию ссылок Project2. –