Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как воткнуть в dll свою API "по образу и подобию"?
|
|||
|---|---|---|---|
|
#18+
Буду объяснять по идиотски, мне просто надо это сделать. Есть Opal.dll Там есть несколько API в файлах c:\opal\src\opal\opal_c.cxx и c:\opal\include\opal.h Ну т.е. с чего срисовывать есть. Через эти родные API я Opal прекрасно использую в моей программе на VB6. Мне нужно решить "нестандартную" задачу. Надо выполнить в C(++) некий код и вернуть результат в VB6 Почему в C++, потому что в VB6 в силу специфики ничего не получится. Короче я сделал так для теста: В файле opal.h накатал Код: plaintext 1. 2. 3. (я подозреваю, что первой строчки для моих целей достаточно) В файле opal_c.cxx накатал Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В VB6 проекте соответсвенно сваял: Код: vbnet 1. 2. 3. 4. Скомпилировал все, нажимаю на Command1, получаю краш vb6 в kernell32 Начал выяснять, заглянул через HEX-вьюер в OPal.dll Вижу там Код: plaintext 1. Т.е. все кроме моей новосозданной. Нет ее в скомпилированной dll Продолжил выяснять. Нашел какой-то (у меня VC2005) c:\opal\src\win32\opal_2005.dtf в нем вот это Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Взял тупо дописал туда: OpalFreeMessage @5 OpalGetMessage @3 OpalInitialise @1 OpalSendMessage @4 OpalShutDown @2 >>>OpalMyNewApi @7<<< _OpalFreeMessage@4 @41437 NONAME _OpalGetMessage@8 @41438 NONAME _OpalInitialise@8 @41439 NONAME _OpalSendMessage@8 @41440 NONAME _OpalShutDown@4 @41441 NONAME _OpalMyNewApi@4 @41442 NONAME После неких игр со случайными циферками 6-7-8 /41442... (чего-то он переписал сам), компилятор C++ ругаться перестал и внутри dll (через HEX) я увидел название своей ф-ции а VB6 вернул мне ответ Msgbox: 777 Но после пары строчек кода в C++ и пары компиляций все опять сбилось и моя "API" в dll не добавляется. Я в этой технике ни хрена не понимаю, мне в данном случае просто надо сделать этот механизм возврата результата через свою API. Скорее всего что-то надо добавить еще в код, вряд ли opal_2005.dtf пишется ручками. Только я не знаю ГДЕ и ЧЕГО. Анализ "образа и подобия" -те 5 API что есть вроде как ничего по делу больше не дает. Вполне возможно что еще какие-то инструкции компилятору где-то прописаны, где это может быть? Подскажет кто в чем загвозка? P.S. Могу конечно чиркануть письмо автору Opal, думаю ответит. Но как то стыдно лезть к нему с этим вопросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 07:30 |
|
||
|
Как воткнуть в dll свою API "по образу и подобию"?
|
|||
|---|---|---|---|
|
#18+
Прошу прощения Код: plaintext 1. 2. 3. Т.е. следует читать как Код: plaintext 1. Думаю это существенное уточнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 07:35 |
|
||
|
Как воткнуть в dll свою API "по образу и подобию"?
|
|||
|---|---|---|---|
|
#18+
Opal.def Код: plaintext 1. 2. 3. 4. 5. Opal.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. opal.cpp Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2013, 01:21 |
|
||
|
Как воткнуть в dll свою API "по образу и подобию"?
|
|||
|---|---|---|---|
|
#18+
Lepsik, Спасибо. Да разобрался уже с .def. Но во первых она почему-то мне не вытаскивала то что я хотел. А во вторых чем делать такое извращение, проще написать свою dll что и было сделано: Как мне написать API-ф-цию чтоб возвращала строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2013, 21:49 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38319793&tid=2020098]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 317ms |
| total: | 575ms |

| 0 / 0 |
