как создать файл lib, который имеет глобальные переменные, и эти глобальные переменные должны делиться своей информацией с другим проектом

0

Созданный проект в visual studio 2008. Теперь мы хотим разделить проект на множество файлов библиотек (DLL), но проблема в том, что у нас есть глобальные переменные, которые находятся в отдельном файле globals.h, используя этот файл, к которому мы обращаемся к глобальным переменным в проекте, используя ключевое слово extern которые объявляются externals.h.

Как поделиться этими данными глобальных переменных в разных библиотечных файлах???

globals.h   externs.h
int a=0;     extern int a;
int b=0;     extern int b;
...        ...
...        ...

ПРИМЕЧАНИЕ. Globals.h включен только один раз в проект.

  • 1
    Когда вы говорите «библиотека», вы имеете в виду статическую библиотеку или динамическую библиотеку (например, DLL)?
  • 0
    динамическая библиотека
Показать ещё 3 комментария
Теги:
visual-studio-2008

1 ответ

1
Лучший ответ

Обычный подход для глобальных переменных следующий:

globals.h
extern int a;
extern int b;

globals.c
int a = 1;
int b = 2;

Обратите внимание, что фактическое определение переменных находится в файле ac (или cpp).

Если вы экспортируете глобальные переменные из dll, необходимо выполнить дополнительные шаги.

globals.h
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

extern MYDLL_API int a;
extern MYDLL_API int b;

globals.c
#include "globals.h"

MYDLL_API int a = 1;
MYDLL_API int b = 2;

Вы должны определить MYDLL_EXPORTS при создании вашей DLL. Если вы используете его из других DLL или исполняемых файлов, он не должен быть определен.

__declspec(dllexport) сообщает компоновщику: Этот символ (переменная, функция, класс) будет использоваться другими dll или приложениями.

__declspec(dllimport) сообщает компилятору: этот символ не определен в этом проекте, а в другой dll.

  • 0
    Получена ошибка относительно статической переменной, объявленной в классе при преобразовании в DLL .... Можете ли вы предоставить документацию или примечания, ссылку относительно создания библиотеки с использованием Visual Studio 2008 на Windows.
  • 0
    Может быть, msdn.microsoft.com/en-us/library/81h27t8c.aspx или stackoverflow.com/questions/3491990/… может помочь вам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню