14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
||||||
1 | ||||||
Импорт элементов класса в программу20.09.2009, 05:57. Показов 2515. Ответов 23
Метки нет (Все метки)
Имеется созданная библиотека, включающая небольшой класс, как правильно реализовать доступ в программе к элементам данного класса, реализованным в dll.
В приложении-dll имеются, следующие файлы:
У меня есть предположение что надо помимо загрузки dll описывать файл-определения класса, а то как реализовать доступ к методом класса без самого объекта. Или как-то можно описать сам конструктор, создающий объект в def-файле?
0
|
20.09.2009, 05:57 | |
Ответы с готовыми решениями:
23
Импорт класса из C++ в C# Импорт класса ошибка Импорт класса из dll Импорт С# класса из DLL в С++/CLI |
14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
|
20.09.2009, 23:37 [ТС] | 2 |
Ладно смотрю никто не может ответить на этот вопрос, тогда спрошу о другом.
Как создается линкером имя вида ??0VirtualFuncs@@QAE@XZ и где его можно определить? Для того чтобы затем явно определить его в def-файле таким образом
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
21.09.2009, 00:12 | 3 |
Извини меня, но я не понял такую деталь
Насколько я знаю, файл *dll это исполняемый файл. Бинарный по факту. Загрузчик смотрит разные значения в его заголовке (размеры секций, адреса, куда загрузить и прочее) и, согласно им, загружает .dll файл в оперативную память. Твой же файл VirtualLibraryDLL_beta1.dll он не бинарный файл. Не исполняемый. Он даже не файл- он... несколько файлов. Текстовых. Руководствовался исключительно желанием помочь. Извини, если что не так. Буду рад любым опровержениям.
0
|
14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
|
21.09.2009, 00:35 [ТС] | 4 |
Я комплирую получаю dll-файл, затем потом использую его в программе-консоли(exe-файл).
Так моя главная проблема это как получить указатель на конструктор класса. DLL содержит класс! Вот в чем главная проблема. P.S. DLL-является исполняемым бинарным файлом это всем понятно.
0
|
209 / 16 / 4
Регистрация: 18.08.2009
Сообщений: 571
|
|
21.09.2009, 18:25 | 6 |
novi4ok, А она вабще верная!!
0
|
14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
|
21.09.2009, 22:05 [ТС] | 7 |
Что верная? Да DLL и EXE компилится однако использовать это невозможно(ошибка этапа выполнения), так как неизвестно,
как создать экземпляр класса VirtualFuncs, поскольку в def-файле я не знаю как объявить конструктор класса в открытую VirtualFuncs в def-файле определять нельзя, можно только, используя декорированное имя вида
0
|
14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
|
22.09.2009, 10:26 [ТС] | 9 |
Главный мой вопрос теперь по каким правилам декорируется имя линкером?
0
|
81 / 81 / 6
Регистрация: 14.09.2009
Сообщений: 252
|
|
22.09.2009, 10:34 | 10 |
0
|
14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
|
22.09.2009, 10:41 [ТС] | 11 |
Потому что класс LPCWSTR, а перед ним всегда должна быть литера L.
P.S. Не по теме.
0
|
81 / 81 / 6
Регистрация: 14.09.2009
Сообщений: 252
|
||||||
22.09.2009, 11:09 | 12 | |||||
Может и не по теме, но вызываеццо это так:
0
|
14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
|
22.09.2009, 11:13 [ТС] | 13 |
У тебя старая версия файла windows.h в VS2008 в LoadLibrary, класс LPCWSTR, а не char*
Поэтому у меня компилится, а у тебя нет О_о
0
|
81 / 81 / 6
Регистрация: 14.09.2009
Сообщений: 252
|
|
22.09.2009, 11:22 | 14 |
Копать кажись в эту сторону:
правда, не знаю как это будет под VS2008...
0
|
14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
|||||||||||
22.09.2009, 11:46 [ТС] | 15 | ||||||||||
У меня есть идея определить все функции, как чисто виртуальные и реализовать в интерфейсе
Необязательно объявлять с модификатором extern "C", можно в def-файле явно определить декорированному имени недекорированное имя
0
|
81 / 81 / 6
Регистрация: 14.09.2009
Сообщений: 252
|
|
22.09.2009, 12:04 | 16 |
Тогда в чем сложность? в получении декорированного имени? Это можно сделать, воспользовавшись утилитой dumpbin.exe с ключом -exports из состава Visual Studio.
0
|
14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
|
22.09.2009, 12:17 [ТС] | 18 |
Я пользуюсь другой утилитой, тоже выдает хороший список декорированных имен функций.
Нужно
0
|
80 / 80 / 19
Регистрация: 07.05.2009
Сообщений: 316
|
|
22.09.2009, 23:53 | 19 |
это злосный макрос от мелкософта в студии. Используется для перевода сторок из ансив в юникод на этапе компиляции.
Добавлено через 1 минуту тьфу ты тут ещё страница, жаль пост удалить нельзя...
0
|
14 / 7 / 0
Регистрация: 20.09.2009
Сообщений: 89
|
|
23.09.2009, 20:39 [ТС] | 20 |
Ну что кто-нибудь знает по каким правилам имя функции искажается линкером очень нужно!!!!
0
|
23.09.2009, 20:39 | |
23.09.2009, 20:39 | |
Помогаю со студенческими работами здесь
20
Импорт класса из другого файла Импорт класса из другого проекта Как сделать импорт класса? Импорт статических методов класса Math. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |