0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 6
1

Экспорт указателя на интерфейс из DLL

16.05.2013, 10:59. Показов 1769. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть проект, к нему прикручен заголовок с библиотекой.
В заголовке хранятся классы, в библиотеке - реализация (Ну, все по-людски).

В классах хранятся указатели на интерфейсы, которые используются в методах.
Для экспорта методов класса использую __declspec(dllexport), а для интерфейсов... Ничего не использую. Как следствие - ошибка доступа к памяти.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class __declspec() Shader
{
public:
 
        ID3DXBuffer* shader;
        ID3DXBuffer* errorBuffer;
 
            IDirect3DVertexShader9* DiffuseShader;
        ID3DXConstantTable* DiffuseConstTable;
 
        D3DXMATRIX View;
        D3DXMATRIX Proj;
 
        __declspec(dllexport) HRESULT loadShader(LPCSTR,LPCSTR,LPCSTR);
        __declspec(dllexport) void UpdateShader(D3DXMATRIX, D3DXMATRIX);
        __declspec(dllexport) void SetVector(LPCSTR, D3DXVECTOR4);
        __declspec(dllexport) void SetMatrix(LPCSTR, D3DXMATRIX);
        __declspec(dllexport) void SetFloat(LPCSTR, FLOAT);
        __declspec(dllexport) void SetInt(LPCSTR, INT);
 
};
Подскажите пожалуйста, как правильно экспортировать указатели и члены классов?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2013, 10:59
Ответы с готовыми решениями:

Получение указателя на функцию из dll
Доброго времени суток! Столкнулся со следующей проблемой. Пытаюсь написать программу...

Вызов функции из DLL (C++) с передачей указателя на массив
Добрый день! Проблема следующая: нужно вызвать функцию из DLL (написана на c++). При этом в...

Возвращение из dll функции указателя на динамический массив
Есть функция описанная в dllextern "c" void* _stdcall _import Func1(char*, int)в нее посылается два...

Экспорт dll (из с++) в с#
Подскажите, как нужно декларировать функционал в с++ коде (в dll) чтобы я её в C# коде мог вызвать,...

5
Модератор
3400 / 2171 / 353
Регистрация: 13.01.2012
Сообщений: 8,408
16.05.2013, 11:37 2
Цитата Сообщение от Mikecoon Посмотреть сообщение
Подскажите пожалуйста, как правильно экспортировать указатели и члены классов?
видите ли... такой фокус как хранение классов в DLL очень специфичный. еще более специфичный чем хранение функций. даже для функций многие среды не могут однозначно договорится о формате lib файла. для классов - вообще мрак. поэтому следует начать с того какая у вас среда?
PS здесь безусловно есть какие-то черты COM, но по-существу ничего относящегося к COM в вашем вопросе я не увидел.
0
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 6
16.05.2013, 12:16  [ТС] 3
Да, дело в том, что вся реализация DirectX построена на COM-объектах, я подумал, что это особенности именно этой сути...

Среда - VS 2012. Разумеется и библиотека и проект компилируются в ней.
0
Модератор
3400 / 2171 / 353
Регистрация: 13.01.2012
Сообщений: 8,408
16.05.2013, 12:23 4
ошибка доступа к памяти возникает при попытке обратиться, например, к shader объекта полученного из DLL? может объект не создан или не инициализировал поле shader?
0
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 6
16.05.2013, 17:37  [ТС] 5
Нет, есть конструктор, в котором все указатели обнуляются.
0
Модератор
3400 / 2171 / 353
Регистрация: 13.01.2012
Сообщений: 8,408
17.05.2013, 09:31 6
Цитата Сообщение от Mikecoon Посмотреть сообщение
Нет, есть конструктор, в котором все указатели обнуляются
если указатель на интерфейс нулевой почему вы удивляетесь что вызов метода интерфейса через такой указатель приводит к краху?
0
17.05.2013, 09:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2013, 09:31
Помогаю со студенческими работами здесь

DLL экспорт строк
известно что dll может работать со строками только ввиде PAnsiChar и PWideChar Данные типы...

Экспорт функции из dll
Здравствуйте! Сейчас изучаю экспорты функций из dll-ок. Функцию без параметров удалось успешно...

Экспорт функции из dll на с++
Здравствуйте, помогите пожалуйста. Не могу экспортировать функцию LibreryNIFound() из dll. dll...

Экспорт CString из dll
Всем доброго времени суток! Возникла такая вот проблемка. В проекте MFC-DLL есть класс,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru