2

一位用户报告说我们的一个应用程序不能在 WINE 下运行。它一直运行,直到他通过某种形式,然后冻结。WINE 给出以下输出:

~/.wine/drive_c/HeroLab$ wine HeroLab.exe
fixme:wininet:InternetSetOptionW Option INTERNET_OPTION_CONNECT_TIMEOUT (30000): STUB
fixme:wininet:InternetSetOptionW INTERNET_OPTION_SEND/RECEIVE_TIMEOUT 30000
fixme:wininet:InternetSetOptionW Option INTERNET_OPTION_CONNECT_TIMEOUT (30000): STUB
fixme:wininet:InternetSetOptionW INTERNET_OPTION_SEND/RECEIVE_TIMEOUT 30000
fixme:wininet:InternetSetOptionW Option INTERNET_OPTION_CONNECT_TIMEOUT (30000): STUB
fixme:wininet:HTTPREQ_QueryOption Semi-STUB INTERNET_OPTION_SECURITY_FLAGS: 0
fixme:wininet:InternetSetOptionW Option INTERNET_OPTION_SECURITY_FLAGS; STUB
fixme:wininet:InternetSetOptionW Option INTERNET_OPTION_CONNECT_TIMEOUT (30000): STUB
fixme:wininet:InternetSetOptionW INTERNET_OPTION_SEND/RECEIVE_TIMEOUT 30000
fixme:wininet:InternetSetOptionW Option INTERNET_OPTION_CONNECT_TIMEOUT (30000): STUB
fixme:wininet:InternetSetOptionW INTERNET_OPTION_SEND/RECEIVE_TIMEOUT 30000
fixme:wininet:InternetSetOptionW Option INTERNET_OPTION_CONNECT_TIMEOUT (30000): STUB
fixme:wininet:InternetSetOptionW Option INTERNET_OPTION_CONNECT_TIMEOUT (30000): STUB
fixme:wininet:InternetSetOptionW INTERNET_OPTION_SEND/RECEIVE_TIMEOUT 30000
fixme:wininet:InternetSetOptionW Option INTERNET_OPTION_CONNECT_TIMEOUT (30000): STUB
fixme:wininet:InternetSetOptionW INTERNET_OPTION_SEND/RECEIVE_TIMEOUT 30000
fixme:wininet:InternetSetOptionW Option INTERNET_OPTION_CONNECT_TIMEOUT (30000): STUB
fixme:bitmap:CreateBitmapIndirect planes = 0
fixme:bitmap:CreateBitmapIndirect planes = 0
fixme:bitmap:CreateBitmapIndirect planes = 0
fixme:bitmap:CreateBitmapIndirect planes = 0
fixme:bitmap:CreateBitmapIndirect planes = 0
fixme:bitmap:CreateBitmapIndirect planes = 0
fixme:bitmap:CreateBitmapIndirect planes = 0
fixme:bitmap:CreateBitmapIndirect planes = 0
fixme:bitmap:CreateBitmapIndirect planes = 0
fixme:bitmap:CreateBitmapIndirect planes = 0
fixme:bitmap:CreateBitmapIndirect planes = 0

谁能向我解释这些信息?我假设它们是来自 WINE 的消息,报告我们正在以 WINE 不支持的方式调用函数,但我们的代码根本不调用 CreateBitmapIndirect。

我们如何才能找到这个问题的根源,并修复我们的应用程序使其在 WINE 下运行?

谢谢。

4

4 回答 4

1

好的 Wine 处于不断发展的状态,你需要找出一些东西;

- 您使用的是哪个版本的 wine 1.1.38 在撰写本文时是最新的,您可能使用的是旧版本,因此您遇到的问题已得到修复。
- 什么应用程序有问题?您是否搜索过应用程序数据库? http://appdb.winehq.org/ 您可以找到在 Wine 下运行应用程序的当前状态以及用户遇到的任何问题。

于 2010-02-12T09:46:53.363 回答
0

http://source.winehq.org/source/dlls/wininet/internet.c

阅读:InternetSetOptionW 正文。大多数标志未实现。解决方法之一是阅读此调用的 Microsoft 文档并找到类似的,但这是相当不可能的。

于 2010-06-13T20:06:21.130 回答
0

在 Wine 下调试您自己的应用程序。向 Wine 开发人员发送反馈。

例如:WINEDEBUG=+GDI wine ./HeroLab.exe

于 2010-06-13T20:12:30.463 回答
0

最好的办法是实现一个日志文件,您可以在其中编写调试跟踪语句。添加代码以编写一行来指示您所在的位置、变量的值等。您可能需要进行多次迭代,添加许多日志记录语句,直到缩小问题发生的范围。

/D使用启动您的应用程序 ( )的命令上的开关激活日志记录。

每次写入时通过关闭并重新打开它来“刷新”日志文件。您需要这个,因为如果您的应用程序崩溃,它将无法到达将关闭日志文件的正常终止代码。

让用户向您发送文件的副本。享受尸检的乐趣。

请注意,Wine 很脆弱,并且会由于 Windows 允许的异常情况而崩溃。例如。NULL 窗口句柄、无效的窗口类等。这是改进代码的机会。

我意识到这已经过时并且OP已经继续前进,我希望它对其他有类似问题的人有所帮助)。

于 2017-12-15T13:50:26.037 回答