|
|
|
проблемы с вызовом dll функции
|
|||
|---|---|---|---|
|
#18+
Привет всем! Очень странная ситуация. Я использую в своем проекте dll. используя некоторые функции в частности TessDllBeginPage, на этой строке где происходит вызов данной фунции программа завершается, без выдачи какого либо предупреждения. другая часть функция из данной библиотеки нормально отрабатывают, передавая управление следующей инструкции за функцией из dll. Почему происходит такое поведение некоторых dll функций на которых программа завершается. и что делать чтобы понять причину всего этого? Ниже код: #pragma hdrstop #include <stdio.h> #include <stdlib.h> #include "tessdll.h" //--------------------------------------------------------------------------- #pragma argsused char* read_bmp_image(); int main(int argc, char* argv[]) { unsigned char *buf=(char*)malloc(124); buf=read_bmp_image(); int r=11; ETEXT_DESC *res; for(int i=0;i<124;i++) printf("%x",buf ); //следующая функция вызывается но не возращает значение и программа заваершается //без выдачи какого либо предупреждения! r=TessDllBeginPage(31,31,buf); printf("%i",r); res=TessDllRecognize_all_Words(); printf("OK"); return 0; } //--------------------------------------------------------------------------- char* read_bmp_image() { int bpl; //bytes per line int wpl; //words per line int nread; //current bits int index; //to cols FILE *fp; int x=31, y=31; unsigned char *buf=(char*)malloc(124); if((fp=fopen("tmp_2.bmp","rb"))==NULL) { printf("Fuck\n"); exit(1); } fseek(fp,62,SEEK_SET); bpl = (x + 7) / 8; //bytes per line wpl = (bpl + 3) / 4; wpl *= 4; for (index = 0; index < y; index++) nread = fread (buf,1, 124,fp); return buf; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 00:03 |
|
||
|
проблемы с вызовом dll функции
|
|||
|---|---|---|---|
|
#18+
не знаю, как с функцией, но вижу несколько проблем в этом коде ))) - для buff выделяется память 2 раза, сначала в main, затем в read_bmp_image, я бы посоветовал переписать read_bmp_image так, чтобы она получала буфер в качестве параметра, а возвращала-бы код ошибки, имхо - функция объявлена как char *read_bmp_image, а реально возвращается unsigned char * - выделив память, неплохо-бы её вернуть, т.е. malloc есть, а free - нету - файл, после открытия тоже-бы неплохо закрыть перед ретурном ну и поведение программы похоже на access violation, если есть доступ к dll, проверьте код на предмет корректного использования памяти в проблемной функции. хрен её знает, эту dll, может там инициализировать её как-то надо... в buff этот вообще что-нить записывается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 00:37 |
|
||
|
проблемы с вызовом dll функции
|
|||
|---|---|---|---|
|
#18+
тот самый Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 14:16 |
|
||
|
проблемы с вызовом dll функции
|
|||
|---|---|---|---|
|
#18+
Есть подозрение, что 32*32 == 1024, а не 124. Может из за этого? А память действительно теряет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2007, 23:57 |
|
||
|
проблемы с вызовом dll функции
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. Это? По x - размер в байтах, по y - в стороках, 1 бит на пиксел. То есть размер буфера у вас должен быть равен - 31 * 8 * 31 / 8 == 961 байт. Так, что видимо access violation (sigsegv). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2007, 00:05 |
|
||
|
|

start [/forum/search_topic.php?author=outcast2&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
8ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 682ms |
| total: | 813ms |

| 0 / 0 |
