簡體   English   中英

Wine錯誤:應用程序嘗試創建一個窗口,但是無法加載驅動程序

[英]Wine error: Application tried to create a window, but no driver could be loaded

我做了一個fcgi-isapi橋,我用wineg++ (關鍵字winelib)編譯了wineg++ 它使用LoadLibrary / GetProcAddress運行純Win32 isapi擴展。 這對於一個簡單的演示isapi dll來說效果很好,但對於更復雜的演示(其中酒在dll內的某個地方崩潰)而言,效果不佳。 WINEDEBUG=+olerelay,+storage,+relay給我以下輸出:

0009:Call KERNEL32.InterlockedIncrement(00000150) ret=1001eebe
0009:Call KERNEL32.UnhandledExceptionFilter(0033f428) ret=7bc8e2f5
wine: Unhandled page fault on write access to 0x00000150 at address 0x7b8716bd (thread 0009), starting debugger...
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
couldn't load main module (0)
0009:Ret  KERNEL32.UnhandledExceptionFilter() retval=00000000 ret=7bc8e2f5
Unhandled exception: page fault on write access to 0x00000150 in 32-bit code (0x7b8716bd).
Register dump:
 CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
 EIP:7b8716bd ESP:0033f8cc EBP:0033f8e0 EFLAGS:00010246(  R- --  I  Z- -P- )
 EAX:00000001 EBX:00000000 ECX:00000000 EDX:00000150
 ESI:0033f8fc EDI:0033f8d4
Stack dump:
0x0033f8cc:  7bc6592e 00000150 00000000 7ca3c7d4
0x0033f8dc:  00000000 0033fdc8 7b823b61 7b8be9d4
0x0033f8ec:  000102d1 0033f8f4 1001eebe 00000150
0x0033f8fc:  7ef82158 7ca3c7d0 f775d2c8 0033faac
0x0033f90c:  7bcd7208 00000000 f775c2b1 0000000f
0x0033f91c:  7bcbbed8 1004e06c 00000002 00115760
Backtrace:
=>0 0x7b8716bd in kernel32 (+0x616bd) (0x0033f8e0)
  1 0x7b823b61 in kernel32 (+0x13b60) (0x0033fdc8)
  2 0x7ef813d0 (0x0033fe18)
  3 0x7ef815f5 (0x0033fe60)
  4 0x7b85e84c in kernel32 (+0x4e84b) (0x0033fe78)
  5 0x7b85f903 in kernel32 (+0x4f902) (0x0033feb8)
  6 0x7bc77600 (0x0033fed8)
  7 0x7bc7a59d (0x0033ffa8)
  8 0x7bc775de (0x0033ffc8)
  9 0x7bc4c65e (0x0033ffe8)

(經過Wine 1.4.1和1.6.2的測試,它們都提供完全相同的輸出(只是一些不同的數字)

我的問題:

  1. 實際會發生什么,如何找出頁面錯誤錯誤的原因?
  2. wine是嘗試運行圖形調試器還是dll本身試圖創建X11對象? 為什么會失敗? 該安裝程序在64位主機上的32位chroot環境中運行,但是我調用xhost +並使用xlogogedit甚至使用Wine的Win32 GUI應用程序對X11進行了測試。 似乎沒有任何X11問題。

更新:這是到源的鏈接: http : //gist.github.com/daald/5f37de8352e1c8ca62db

根據這篇文章wine是用於圖形程序的。 要在沒有圖形界面的情況下運行程序,請改用wineconsole ,例如

wineconsole fastcgi-to-isapi.exe

請參閱: 文本模式程序(CUI:控制台用戶界面)

或者使用X虛擬幀緩沖 ,請參閱: 完全無頭運行wine

嘗試

wineconsole --backend=curses fastcgi-to-isapi.exe

這篇文章所述:

Wine具有三種在命令行模式下運行應用程序的選項:

  • 在裸露的Linux控制台上(葡萄酒)
  • 在帶有curses的linux控制台上(wine wineconsole --backend = curses)
  • 在Win32視窗中(wine wineconsole --backend = user)

對於wineconsole,默認為用戶后端,這就是命令行嘗試打開窗口的原因。

但是,它不會打印程序的輸出。 如果需要輸出,可以首先以交互方式啟動wineconsole,然后從那里運行exe:

me@mycomputer:~$ wineconsole
Microsoft Windows 6.1.7601 (3.0)

Z:\home\me> HelloWorld.exe
Hello World!

顯然,如果您要以編程方式進行操作,則不是一個好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM