|
VBCDeclFix - Add-in позволяющий работать с CDecl функциями
|
|||
---|---|---|---|
#18+
Этот Add-in позволяет использовать CDecl функции в VB6 как в библиотеках типов так и в с использованием ключевого CDecl в Declare. Также данный Addi-in позволяет определить CDecl функции в стандартных модулях по типу: Код: vbnet 1.
Если кто-нибудь когда-нибудь пытался использовать CDECL функции объявленные в библиотеке типов то наверняка знает что отладка невозможна. Проект даже не стартует, а среда падает еще на этапе компиляции, хотя компиляция в нативный код работает без проблем. Похожая проблема с ключевым словом CDecl - рантайм всегда генерирует ошибку 0x31 (Bad Dll Calling Convention) и не получится использовать такие функции ни в IDE ни в скомпилированном коде. Этот Add-in исправляет эти проблемы и позволяет отлаживать код как в IDE, так и компилировать его в исполняемый файл. https://github.com/thetrik/VBCDeclFix ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2021, 15:32 |
|
VBCDeclFix - Add-in позволяющий работать с CDecl функциями
|
|||
---|---|---|---|
#18+
ATM-TURBO 2, Что касаеЦЦа вызова функций с соглашениями CDecl, Вы же сами публиковали простое решение, основанное на DispCallFunc(). Какие у него такие минусы, которыми нельзя в 99% случаев пренебречь, имея ввиду плюсы? Я понимаю и уважаю Ваш спортивный интерес, но в Вашем сообщении содержиЦЦа намёк на единственное правильное решение (IMHO, конечно; Вы же будете отрицать), который могут принять за чистую монету. И, с учётом исчезающе малой аудитории, интересующейся VB5/6, Вы бОльшую аудиторию VBA-шников им (таким решением) не отсекли? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 14:56 |
|
VBCDeclFix - Add-in позволяющий работать с CDecl функциями
|
|||
---|---|---|---|
#18+
ЦЦа Что касаеЦЦа вызова функций с соглашениями CDecl, Вы же сами публиковали простое решение, основанное на DispCallFunc(). Какие у него такие минусы, которыми нельзя в 99% случаев пренебречь, имея ввиду плюсы? DispCallFunc - это костыль. Плюс еще работает медленнее, чем нативный метод предложенный ATM-TURBO 2. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 15:07 |
|
VBCDeclFix - Add-in позволяющий работать с CDecl функциями
|
|||
---|---|---|---|
#18+
Eolt, когда на накладные разходы по вызову DispCallFunc() не наплевать? При сценарии, когда функция вызываеЦЦа внутри нескольких уровней циклов, 10 6 + с -1 ? Редкий сценарий. Так же наплевать и на необходимость написания функции-обёртки - всё равно, чтобы скрестить ужа (программу) с ежом (библиотекой), требуюЦЦа действия по подготовке аргументов, вызову, обработке результатов для дальнейшего использования. Хотите накладных расходов избежать - пишите монолитные "портянки" на одном (максимально низкоуровневом) языке, инлайнте все функции, разворачивайте циклы и т. п. (и вообще, ОО и структурное программирование, разбиение приложения на компоненты - зло :) ) Костыль, но что здесь меньший костыль? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 15:31 |
|
VBCDeclFix - Add-in позволяющий работать с CDecl функциями
|
|||
---|---|---|---|
#18+
ЦЦа Eolt, когда на накладные разходы по вызову DispCallFunc() не наплевать? При любом значительном количестве вызовов функции. Например при таком: Код: vbnet 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. 30. 31.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 16:13 |
|
VBCDeclFix - Add-in позволяющий работать с CDecl функциями
|
|||
---|---|---|---|
#18+
Eolt, ЦЦа При сценарии, когда функция вызываеЦЦа внутри нескольких уровней циклов, 10 6 + с -1 ? Редкий сценарий. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2021, 17:50 |
|
VBCDeclFix - Add-in позволяющий работать с CDecl функциями
|
|||
---|---|---|---|
#18+
ЦЦа ATM-TURBO 2, Что касаеЦЦа вызова функций с соглашениями CDecl, Вы же сами публиковали простое решение, основанное на DispCallFunc(). Какие у него такие минусы, которыми нельзя в 99% случаев пренебречь, имея ввиду плюсы? Я понимаю и уважаю Ваш спортивный интерес, но в Вашем сообщении содержиЦЦа намёк на единственное правильное решение (IMHO, конечно; Вы же будете отрицать), который могут принять за чистую монету. И, с учётом исчезающе малой аудитории, интересующейся VB5/6, Вы бОльшую аудиторию VBA-шников им (таким решением) не отсекли? DispCallFunc имеет несколько недостатков. Самый очевидный - нужно писать обертку, также загружать вручную библиотеки, получать адреса функций, ну и скорость работы конечно на порядки ниже. Куда проще как сейчас просто объявлять как обычные API - открываются большие возможности в использовании почти любых C-библиотек. Второй момент связан с колбеками, через DispCallFunc их невозможно организовать. Аналогично теперь возможно писать плагины там где используются C-либы. Для VBA я даже не смотрел, т.к. им не интересуюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 00:22 |
|
VBCDeclFix - Add-in позволяющий работать с CDecl функциями
|
|||
---|---|---|---|
#18+
ЦЦа ATM-TURBO 2, Что касаеЦЦа вызова функций с соглашениями CDecl, Вы же сами публиковали простое решение, основанное на DispCallFunc(). Какие у него такие минусы, которыми нельзя в 99% случаев пренебречь, имея ввиду плюсы? Я понимаю и уважаю Ваш спортивный интерес, но в Вашем сообщении содержиЦЦа намёк на единственное правильное решение (IMHO, конечно; Вы же будете отрицать), который могут принять за чистую монету. И, с учётом исчезающе малой аудитории, интересующейся VB5/6, Вы бОльшую аудиторию VBA-шников им (таким решением) не отсекли? Для VBAшников использовать подобные решения это стрелять себе в ногу. Одно неверное движение в макросе - и какой-нибудь эксель улетает в дальние края. Хочется запретного в VBA? Без проблем, но штатными методами - через COM-переходник. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2021, 22:03 |
|
|
start [/forum/topic.php?fid=60&msg=40046942&tid=2154744]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 275ms |
total: | 399ms |
0 / 0 |