添加了库; Borland C++ Builder 无故暂停
Posted
技术标签:
【中文标题】添加了库; Borland C++ Builder 无故暂停【英文标题】:Added library; Borland C++ Builder pauses without reason 【发布时间】:2010-11-19 04:40:18 【问题描述】:我一直在尝试在 Borland C++ Builder(在 Windows XP 中)的程序中使用 UnderC 库(提供 c++ 脚本功能),但这给我带来了一些困难,我不知道如何解决。出现的其他问题,我在网上找到了解决方案,但这一个很难用易于搜索的单词来描述。我已经添加(到编译器搜索路径)包含所需文件的文件夹 - “ucdl.h”和“ucc12.lib”(C++ 告诉我需要将 .lib 从 coff 转换为 omf,所以我这样做了;它不再给我那个错误)。我添加了 #include "ucdl.h" 行,现在它没有给我任何错误消息 - 但是当我运行它时,它做的第一件事就是停在 cpu 调试窗口的中间,就好像我有设置断点。没有断点。它没有给出停止的任何理由。如果我让它继续运行,它会给我一个访问冲突错误。一件事可能有用也可能没用 - 如果在 cpu 调试器中,我从它暂停的地方备份了一行,它会重新解析可见的程序集,然后它所在的行显示为早一个字节开始。 当代码从它停止的地方运行时,据我所知,为了到达它崩溃的地方,它(在汇编代码中)从 ___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】:好的...我弄乱了设置,我在 ucc12.dll(而不是 .lib)上使用了“将文件添加到您的项目”,然后选中了“复制本地”,它将文件复制到该程序的本地目录...当时该程序运行良好。所以,它现在可以工作了......但我仍然不知道为什么会这样,或者究竟是什么导致了之前非常奇怪的行为。如果有人对此有任何想法,我很想知道。但至少现在该程序正在运行。
【讨论】:
以上是关于添加了库; Borland C++ Builder 无故暂停的主要内容,如果未能解决你的问题,请参考以下文章
Borland C++ Builder 6 上的奇怪链接器错误
虚拟内存地址空间不足(Borland C++ Builder 6 程序)
Borland Builder C++ 6 中的 CoreAudio API
无法在 Borland C++ Builder 中使用 SetWindowsHookEx 和 LowLevelKeyboardProc