|
Как создать на VBA объект класса, который написан на С++ и подключен как DLL?
|
|||
---|---|---|---|
#18+
Есть тестовый код на C++, в котором описана функция MyFun001 и класс MyClass , который содержит функцию CFun001 и переменную CVal . Код компилируется в библиотеку DLL (используется Visual Studio 2015). Описанный тестовый проект С++ содержит два файла: source.cpp и DefFile.def . Файл DefFile.def нужен, как я понимаю, для того, чтобы указать компилятору создать в DLL точки входа для функций (чтобы def-файл учитывался компилятором, в настройках проекта нужно указать имя этого файла - см. подробнее здесь ). Содержание кода С++: source.cpp: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
DefFile.def: Код: plaintext 1. 2. 3.
Код VBA в MS Excel 2010: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Функция MyFun001 из DLL в VBA запускается и корректно работает. Но как создать объект класса MyClass я не понимаю, приведённый код вызывает ошибку "User-defined type not defined". В файле .def класс описать нельзя так же как функции, а в VBA класс нельзя декларировать (Declare Class...). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2016, 12:15 |
|
Как создать на VBA объект класса, который написан на С++ и подключен как DLL?
|
|||
---|---|---|---|
#18+
чтобы работало Dim o1 As New MyClass, библиотека должна быть com-библиотекой, то есть поддерживать интерфейсы IUnknown и IDispatch, а еще она должна быть зарегистрирована в реестре или иметь манифест. https://msdn.microsoft.com/en-us/library/ms680573.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2016, 14:04 |
|
Как создать на VBA объект класса, который написан на С++ и подключен как DLL?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2016, 14:06 |
|
Как создать на VBA объект класса, который написан на С++ и подключен как DLL?
|
|||
---|---|---|---|
#18+
Antonariy, а есть ли возможность создавать объекты без регистрации DLL? Предполагается, что файл Excel + файл DLL будут использоваться на разных компьютерах разными пользователями (в т.ч. кнопконажимателями). Регистрация DLL будет либо требовать каждый раз моего присутствия, либо может сопровождаться затруднениями, которых хотелось бы избежать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.12.2016, 14:35 |
|
|
start [/forum/topic.php?fid=60&fpage=18&tid=2155370]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 137ms |
0 / 0 |