|
|
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
Есть интересная dll Она поддерживает API C API работать я умею давно Но все те API как правило от Microsoft, все прописано в документациях, все примеры при наличии навыков ищутся. А здесь примеров в принципе нет, хотя все объявления в исходных кодах я вижу, напр. Код: plaintext Код: plaintext Какой здесь вообще подход может быть, потому как управлять данной библиотекой из VB было бы очень интересно. Чутье подсказывает что это очень даже возможно, но понять принципы пока не могу, т.е. нужны какие-то примеры, а какие - неясно. Там всего-то 4 функции To make the above easier, there are only four functions: OpalInitialise(), OpalShutDown(), OpalGetMessage() and OpalSendMessage(). All commands to OPAL and indications back from OPAL are done through the latter two functions. Late binding also allows for easier integration of OPAL fucntionality to interpreted languages such as Java, Perl etc. Лезть к авторам с вопросами по VB бесполезно, они его точно не знают и в лучшем случае будут какие-то общие слова типа тех что я привел. И другой вопрос. Что значит прилинковать библиотеку? Добавить ее в References и пользоваться ее объектами? Ну, с этой так не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 12:25 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
попроси .h файлы этой библиотечки и посмотри как объявлены функции. для VB нужно, чтобы были _stdcall, если там _cdecl, то ничего не выйдет. писать придеться обертку или tlb делать. обертку в таком случае лучше делать на .NET там проще с декларациями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 12:31 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
Ну, с исходными кодами проблем нету Код: plaintext 1. Или продолжать огорчаться? Потому как дальше идет темный лес и эту struct переводить непонятно как... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 13:54 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
у вас функция указатель на структуру возвращает, поэтому для VB только так: Код: plaintext а вот дальше что делать, уже не совсем ясно. возможно можно как-то читать из памяти по данному указателю CopyMemory и тп в аналогичную структуру. все-таки лучше я думаю попробовать сделать com-обёртку на C++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 14:05 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
Ну да, я точно также написал. Однако, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. А потом при нажатии на Command2 возвращается 1 Код: plaintext 1. 2. 3. При этом правда странно, что если после command2 (и возврата 1) снова нажать Command1, то vb вылетает, т.е. можно один раз открыть -закрыть... Ну, т.е. теперь надо разбираться с оставшимися 2-мя API, которые собственно и командуют парадом. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Ну, по идее писать их надо так Код: plaintext 1. Вот только с "OpalMessage" типом придется попотеть, очевидно расписывать, что там есть что, следуя C++ коду. Ну, конечно двумя строчками уже не ограничишься, придется сочинять...,сравнивать с примерами других модулей, пытаться запустить те процедуры, которые для меня более менее понятны с т.зр. C++-примеров Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 15:35 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
unsigned * version -> [ByRef] version As Long ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 16:28 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
Дмитрий77 Код: plaintext Код: plaintext Замени ByVal на ByRef. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 16:38 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
Угу... заменил теперь вот так не вылетает Код: plaintext Код: plaintext char* -строка(string) char -один символ Дальше, я понял, предстоит нехилая каскадная работа, по расшифровке OpalMessageType Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. enum это enum const char * это string unsigned это long (int лучше избегать, это уже понял) Примерно так... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. А что ж такое union { } m_param; и как эту хрень переводить на VB? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 17:39 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 17:45 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
Konst_One, вопрос там задан похожий, но за возможность просмотра ответа с меня требуют данные кредитки, чего мне не очень нравится, м.б. есть еще где посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 17:55 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
I have converted C/C++ Header files to VB plenty of times but the following combination looks to be more difficult: Код: 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. 30. 31. Any ideas?Start Free Trial ============================== Basically, 'union' keyword specifies that it's either one or another. In VB this would be EXACTLY translated into something like this: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. But you can simply do it like this: Код: plaintext 1. 2. 3. 4. Either of these methods will give you a VB user-defined type with the exact same size (in bytes) as your C structure. In your code those you'll need to use bit operations to retrieve the fields. Assume, you are using the second construct and also note that VB does not have bitwise shift operators. You will use the following code to access the fields denoted as BYTE ... : x (basically declared as bits). Say, you have Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. You can also wrap the structure in a class and write methods for accessing the bit fields. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 17:59 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
а вообще тут смотрел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 18:00 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
Мудрено, однако. Ну, причем тут MobilOpal, я так и не врубился, но с union некое соображение-таки возникло. Если неправ, поправьте, пока далеко не ушел. Вот значит структура. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 1) m_type (какого типа этот Message) 2) m_param , кот. в зависимости от значения m_type может обладать только одним свойством конструкции union. Здравый смысл подсказывает следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. если напр. мы получили Message1, проверяем его свойство Message1.m_type, и если, скажем, оно равно 0, т.е. OpalIndCommandError, то читаем описание ошибки как: Message1.m_param.m_commandError, а все остальное что содержится в Union, нас не интересует, там очевидно, ничего больше и нет. А если,скажем мы хотим послать системе Message2,скажем, установить stunServer, то, наверно надо будет писать: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2009, 20:34 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. Типов натолкал в этот несчастный модуль вагон... Чего бы не делал в духе, Код: plaintext 1. 2. 3. 4. Код: plaintext а просто Код: plaintext Возникла смутная мысль, что нельзя наверно Message возвращать из API, уж больно сложна она Код: 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.03.2009, 01:38 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
А что мешает написать клиента на С? На VB свет клином не сошелся. В крайнем случае сделай ActiveX обертку над своей dll и вызывай ее из VB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 16:40 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
Не, ну по идее на C все итак написано, просто есть API хочется понять как они работают. Ну и возможно улучшить приложение в плане интерфейса. Я тут тему подымал про перекидывание файлами. Я исторически пишу на VB, а на C даже форму с двумя кнопками - наверно проблема будет на сутки. Там по идее через эти Massage все управляется стандартно и любое приложение пишется. А писать "обертки" -думаете я знаю как это делается. Хотя бы в референс добавить чтоб с объектами привычно работать- было бы супер, и даже наверно больше сделать и понять смог, потому как чего-то вымучивать на C для меня занятие не из легких. С API понятно тяжело, даже если заработает, по сути любое действие - итти в C-коды пытаться понять и переписывать на VB те команды, что узрею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 17:22 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
Дмитрий77Не, ну по идее на C все итак написано, просто есть API хочется понять как они работают. Ну и возможно улучшить приложение в плане интерфейса. Я тут тему подымал про перекидывание файлами. Я исторически пишу на VB, а на C даже форму с двумя кнопками - наверно проблема будет на сутки. Там по идее через эти Massage все управляется стандартно и любое приложение пишется. Ну и? Сутки потратить на изучение языка, зато потом года два сэкономить на практическом написании программ. Да и GUI на современных C/C++ библиотеках легче писать чем на VB. Дмитрий77А писать "обертки" -думаете я знаю как это делается.Теперь знаешь: http://msdn.microsoft.com/en-us/library/aa751972.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 17:41 |
|
||
|
Как использовать API если есть исходные коды C++ но нет документации для VB
|
|||
|---|---|---|---|
|
#18+
скорее это ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2009, 17:46 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=35887824&tid=2161219]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
185ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 490ms |

| 0 / 0 |
