Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
#1

Как экспортировать переменную (константу) из dll - C++

01.07.2012, 15:34. Просмотров 1653. Ответов 8
Метки нет (Все метки)

Понимаю что очень глупый вопрос, но нету времени..
Как экспортировать константу и потом ее получить, динамически подгрузив библу.
Функции экспортирую так

C++
1
2
3
4
5
6
7
8
9
#ifdef __cplusplus 
#define EXPORT extern "C" __declspec (dllexport) 
#else 
#define EXPORT __declspec (dllexport) 
#endif
EXPORT int Func1(int param)
{
    return param + 1;
}
Вызываю так
C++
1
2
3
4
5
6
7
8
9
10
typedef int(*funcDll)( int );
funcDll myFunc;
 
HINSTANCE hDllInstance = LoadLibrary("dll1.dll");
    if (hDllInstance == NULL)
        cout << "hDllInstance == NULL" << endl;
    else
        myFunc = (funcDll)GetProcAddress(hDllInstance, "Func1");
    if (myFunc == NULL)
        cout << "myFunc == NULL" << endl;
Можно тоже самое, но не для функции, а для переменной, скажем типа int
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2012, 15:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как экспортировать переменную (константу) из dll (C++):

Как экспортировать интерфейс из dll - C++
делал всё по примеру в инете, не работает код интерфейса struct I_MyInterface { virtual bool Init(int parms)=0; ...

Как экспортировать структуру из DLL? - C++
Как експортировать структуру из DLL Добавлено через 1 час 5 минут Что же я в тупике?

Как импортировать и экспортировать из dll класс? - C++
Помогите, плз. Создал dll: //... class __declspec(dllexport) a { public : a(); }; a::a() {

Как экспортировать функцию из dll? У меня ошибка выдаётся - C++
Как экспортировать ф-ю из dll? У меня ошибка выдаётся

Народ подскажите, чета я забыл DLL как экспортировать - C++
Вот например есть в DLL код функции: void OpenAbout(HINSTANCE hInst, int cmdMode, HWND hWnds) { .... return; }

Как в С++ обозначить константу е - C++
Как в С++ обозначить константу е в математических вычеслениях

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
02.07.2012, 15:40 #2
этого нельзя сделать
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
02.07.2012, 15:58 #3
Dll могут экспортировать данные, но не меременные, а так называемые ресурсы. Переменные для их использования придётся всё рано создавать в приложении.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
02.07.2012, 16:00 #4
Можно сделать функцию, которая будет возвращать значение переменной.
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
02.07.2012, 17:52  [ТС] #5
gooseim, я так и делал. Просто в задании к лабе было, экспорт функций и констант. Я думал можно, ну нет так нет. Тем более уже не актуально, лабу уже отдал.

Добавлено через 1 минуту
Даже не верится что нет никакого костыля xD чтоб именно как переменную экспортировать.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
02.07.2012, 18:32 #6
Serg046, костыль есть: пишешь функцию, которая возвращает указатель на переменную и потом делаешь с ней, что хочешь.
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
09.07.2012, 11:00  [ТС] #7
Ну это примерно тоже самое.
-=ЮрА=-
Заблокирован
Автор FAQ
09.07.2012, 11:18 #8
Вы чё прикалываетесь - нельзя экспортировать символ
Всё можно лишь бы руки правильно росли
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// The following ifdef block is the standard way of creating macros which make exporting 
// from a DLL simpler. All files within this DLL are compiled with the EXPORTSYMBOL_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see 
// EXPORTSYMBOL_API functions as being imported from a DLL, wheras this DLL sees symbols
// defined with this macro as being exported.
#ifdef EXPORTSYMBOL_EXPORTS
#define EXPORTSYMBOL_API __declspec(dllexport)
#else
#define EXPORTSYMBOL_API __declspec(dllimport)
#endif
 
// This class is exported from the ExportSymbol.dll
//вот вам целый класс на экспорт
class EXPORTSYMBOL_API CExportSymbol {
public:
    CExportSymbol(void);
    // TODO: add your methods here.
};
 
extern EXPORTSYMBOL_API int nExportSymbol;//Вот вам экспортируемый символ
 
EXPORTSYMBOL_API int fnExportSymbol(void);
Миниатюры
Как экспортировать переменную (константу) из dll  
Serg046
21 / 21 / 2
Регистрация: 07.01.2010
Сообщений: 376
10.07.2012, 16:05  [ТС] #9
-=ЮрА=-, спасибо добрый человек. Я чувствовал подвох xD.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2012, 16:05
Привет! Вот еще темы с ответами:

Как увеличить константу на 1? - C++
Я пытался делать ++q и q += 1! Ничего не помогает, выдаёт ошибку: выражение должно быть допустимым для изменения левосторонним значением....

Как задать константу Пи - C++
пишет ошибку 19 7 expected primary-expression before '=' token в 19 строке, ругается на Pi я так понял,мол типо нельзя...но если формула...

Как исправить константу - C++
int 0=n%100; как сделать что б програма полностью заработала?????????? #include&lt;iostream&gt; using namespace std; int main()...

Как склеить текстовую константу - C++
Стоит задача создать константный массив константовых строковых массивов. всё довольно просто, но я не знаю как внутри объявления задать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.07.2012, 16:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru