Добавлена ​​библиотека;Borland C ++ Builder делает паузу без причины - PullRequest
1 голос
/ 19 ноября 2010

Я пытался использовать библиотеку UnderC (предоставляет функции сценариев c ++) в программе на Borland C ++ Builder (в Windows XP), но это вызывает у меня трудности, которые я не знаю, как исправить. Другие проблемы, которые возникли, я нашел их решение в Интернете, но эту проблему трудно описать легко доступными для поиска словами. Я добавил (к пути поиска компилятора) папку, в которой содержатся необходимые файлы - "ucdl.h" и "ucc12.lib" (C ++ сказал мне, что мне нужно преобразовать .lib из coff в omf, поэтому я и сделал; это перестало давать мне эту ошибку). Я добавил строку #include "ucdl.h", и теперь она не выдает мне сообщений об ошибках - но когда я ее запускаю, первое, что он делает, это останавливается в середине окна отладки процессора, как будто я установить точку останова. Там нет точек останова. Это не дает никакой причины относительно того, почему это остановилось. Если он продолжит работать, он выдаст ошибку нарушения доступа. Одна вещь, которая может или не может быть полезной - если в отладчике ЦП я создаю резервную копию строки, с которой он сделал паузу, он повторно анализирует видимую сборку, а затем показывается, что строка, на которой он находился, начинает байт раньше. Когда код запускается с того места, где он останавливается, насколько я могу судить, чтобы добраться до места сбоя, он идет (в коде сборки) с
___CRTL_VCL_Init в
___CRTL_VCL_Sharemem в
__roundToInt64 (), в следующей строке:
00403204 FF25387B4000 jmp dword ptr [$ 00407b38]

Этой строке предшествует много похожих строк, указывающих на смежные области памяти. Адрес, содержащийся в указателе, равен 0x00009B47, который, по-видимому, находится вне диапазона программы или чего-либо еще и, таким образом, выдает ошибку. Я не уверен, как решить эту проблему, так как он не дает мне никаких ошибок при первом остановке (действительно странно), нет никакого исходного кода, связанного с тем, где он выдает ошибку, и, кажется, выдает ошибку в Область инициализации VCL, и я не знаю, как это могло бы произойти при добавлении библиотеки. Любые идеи, кто-нибудь?

О, также, похоже, что он останавливается сразу после загрузки borlndmm.dll, тогда как обычная программа продолжает загружать больше dll. Журнал событий показывает:

Thread Start: Thread ID: 3028. Process ManualEventLogger.exe (4932)
Process Start: C:\Documents and Settings\Matthew\My Documents\Borland Studio Projects\Cantrips\Manual Event Logger\Debug_Build\ManualEventLogger.exe. Base Address: $00400000.     Process ManualEventLogger.exe (4932)
Module Load: ManualEventLogger.exe. Has Debug Info. Base Address: $00400000. Process ManualEventLogger.exe (4932)
Module Load: ntdll.dll. No Debug Info. Base Address: $7C900000. Process ManualEventLogger.exe (4932)
Module Load: KERNEL32.dll. No Debug Info. Base Address: $7C800000. Process ManualEventLogger.exe (4932)
Module Load: vcl100.bpl. No Debug Info. Base Address: $52000000. Process ManualEventLogger.exe (4932)
Module Load: rtl100.bpl. No Debug Info. Base Address: $51F20000. Process ManualEventLogger.exe (4932)
Module Load: OLEAUT32.dll. No Debug Info. Base Address: $77120000. Process ManualEventLogger.exe (4932)
Module Load: ADVAPI32.dll. No Debug Info. Base Address: $77DD0000. Process ManualEventLogger.exe (4932)
Module Load: RPCRT4.dll. No Debug Info. Base Address: $77E70000. Process ManualEventLogger.exe (4932)
Module Load: Secur32.dll. No Debug Info. Base Address: $77FE0000. Process ManualEventLogger.exe (4932)
Module Load: GDI32.dll. No Debug Info. Base Address: $77F10000. Process ManualEventLogger.exe (4932)
Module Load: USER32.dll. No Debug Info. Base Address: $7E410000. Process ManualEventLogger.exe (4932)
Module Load: msvcrt.dll. No Debug Info. Base Address: $77C10000. Process ManualEventLogger.exe (4932)
Module Load: ole32.dll. No Debug Info. Base Address: $774E0000. Process ManualEventLogger.exe (4932)
Module Load: VERSION.dll. No Debug Info. Base Address: $77C00000. Process ManualEventLogger.exe (4932)
Module Load: MPR.dll. No Debug Info. Base Address: $71B20000. Process ManualEventLogger.exe (4932)
Module Load: IMAGEHLP.dll. No Debug Info. Base Address: $76C90000. Process ManualEventLogger.exe (4932)
Module Load: WSOCK32.dll. No Debug Info. Base Address: $71AD0000. Process ManualEventLogger.exe (4932)
Module Load: WS2_32.dll. No Debug Info. Base Address: $71AB0000. Process ManualEventLogger.exe (4932)
Module Load: WS2HELP.dll. No Debug Info. Base Address: $71AA0000. Process ManualEventLogger.exe (4932)
Module Load: OLEACC.dll. No Debug Info. Base Address: $74C80000. Process ManualEventLogger.exe (4932)
Module Load: MSVCP60.dll. No Debug Info. Base Address: $76080000. Process ManualEventLogger.exe (4932)
Module Load: MSIMG32.dll. No Debug Info. Base Address: $76380000. Process ManualEventLogger.exe (4932)
Module Load: COMCTL32.dll. No Debug Info. Base Address: $5D090000. Process ManualEventLogger.exe (4932)
Module Load: SHELL32.dll. No Debug Info. Base Address: $7C9C0000. Process ManualEventLogger.exe (4932)
Module Load: SHLWAPI.dll. No Debug Info. Base Address: $77F60000. Process ManualEventLogger.exe (4932)
Module Load: WINSPOOL.DRV. No Debug Info. Base Address: $73000000. Process ManualEventLogger.exe (4932)
Module Load: comdlg32.dll. No Debug Info. Base Address: $763B0000. Process ManualEventLogger.exe (4932)
Module Load: oledlg.dll. No Debug Info. Base Address: $7DF70000. Process ManualEventLogger.exe (4932)
Module Load: borlndmm.dll. No Debug Info. Base Address: $21670000. Process ManualEventLogger.exe (4932)

1 Ответ

0 голосов
/ 19 ноября 2010

Хорошо ... Я возился с настройками, и я использовал «добавить файл в ваш проект» на ucc12.dll (в отличие от .lib), а затем проверил «Копировать локальный», который копирует файл влокальный каталог программы ... и тогда программа работала нормально.Итак, это работает сейчас ... но я до сих пор не представляю, почему это сработало, или что именно раньше вызывало очень странное поведение.Если у кого-то есть идеи по этому поводу, мне было бы интересно узнать.Но, по крайней мере, программа работает сейчас.

...