Page 1 of 3

wxWebView and Windows

Posted: Wed Jul 31, 2019 2:07 pm
by rocrail
I'm trying to compile the webview sample for Windows.
MacOS and Linux: No Problem

Windows: Link errors.

Code: Select all



/home/pi/Projects/wxWidgets/win64build/bk-deps x86_64-w64-mingw32-g++ -c -o webview_webview.o -D__WXMSW__      -I../../../samples/webview  -I../../../samples/webview/../../samples -Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy -Woverloaded-virtual  -D_FILE_OFFSET_BITS=64 -I/home/pi/Projects/wxWidgets/win64build/lib/wx/include/x86_64-w64-mingw32-msw-unicode-static-3.1 -I../../../include -O2  ../../../samples/webview/webview.cpp

x86_64-w64-mingw32-windres -i../../../samples/webview/../sample.rc -owebview_sample_rc.o    --define __WXMSW__        --include-dir ../../../samples/webview  --include-dir ../../../samples/webview/../../samples --include-dir /home/pi/Projects/wxWidgets/win64build/lib/wx/include/x86_64-w64-mingw32-msw-unicode-static-3.1 --include-dir ../../../include
x86_64-w64-mingw32-g++ -o webview.exe webview_webview.o webview_sample_rc.o    -L/home/pi/Projects/wxWidgets/win64build/lib -mwindows            -lwxscintilla-3.1-x86_64-w64-mingw32 -lwx_mswu-3.1-x86_64-w64-mingw32 -lwxscintilla-3.1-x86_64-w64-mingw32 -lwxtiff-3.1-x86_64-w64-mingw32 -lwxjpeg-3.1-x86_64-w64-mingw32 -lwxpng-3.1-x86_64-w64-mingw32   -lwxzlib-3.1-x86_64-w64-mingw32 -lwxregexu-3.1-x86_64-w64-mingw32 -lwxexpat-3.1-x86_64-w64-mingw32 -lrpcrt4 -loleaut32 -lole32 -luuid -luxtheme -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lcomdlg32 -ladvapi32 -lversion -lwsock32 -lgdi32 -loleacc    -lrpcrt4 -loleaut32 -lole32 -luuid -luxtheme -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lcomdlg32 -ladvapi32 -lversion -lwsock32 -lgdi32 -loleacc
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-uuid.o):uuid.c:(.rdata+0x90): multiple definition of `CLSID_StdURLMoniker'
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-extras-uuid.o):extras-uuid.c:(.rdata$CLSID_StdURLMoniker[CLSID_StdURLMoniker]+0x0): first defined here
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-uuid.o):uuid.c:(.rdata+0xa0): multiple definition of `CLSID_MkProtocol'
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-extras-uuid.o):extras-uuid.c:(.rdata$CLSID_MkProtocol[CLSID_MkProtocol]+0x0): first defined here
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-uuid.o):uuid.c:(.rdata+0xb0): multiple definition of `CLSID_HttpSProtocol'
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-extras-uuid.o):extras-uuid.c:(.rdata$CLSID_HttpSProtocol[CLSID_HttpSProtocol]+0x0): first defined here
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-uuid.o):uuid.c:(.rdata+0xc0): multiple definition of `CLSID_HttpProtocol'
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-extras-uuid.o):extras-uuid.c:(.rdata$CLSID_HttpProtocol[CLSID_HttpProtocol]+0x0): first defined here
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-uuid.o):uuid.c:(.rdata+0xd0): multiple definition of `CLSID_GopherProtocol'
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-extras-uuid.o):extras-uuid.c:(.rdata$CLSID_GopherProtocol[CLSID_GopherProtocol]+0x0): first defined here
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-uuid.o):uuid.c:(.rdata+0xe0): multiple definition of `CLSID_FtpProtocol'
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-extras-uuid.o):extras-uuid.c:(.rdata$CLSID_FtpProtocol[CLSID_FtpProtocol]+0x0): first defined here
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-uuid.o):uuid.c:(.rdata+0xf0): multiple definition of `CLSID_FileProtocol'
/usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/../../../../x86_64-w64-mingw32/lib/libuuid.a(lib64_libuuid_a-extras-uuid.o):extras-uuid.c:(.rdata$CLSID_FileProtocol[CLSID_FileProtocol]+0x0): first defined here
collect2: error: ld returned 1 exit status
Makefile:156: recipe for target 'webview.exe' failed
make: *** [webview.exe] Error 1

Someone has a Tip for me?
I added the configure options --enable-webkit and --enable-webview.
Do I miss something?

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 2:54 pm
by PB
Googling the first error (always a good idea) returns e.g. this
https://sourceforge.net/p/mingw-w64/bugs/646/

I.e., your version of mingw is old and buggy and you need to upgrade it.

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 3:04 pm
by rocrail
Thanks,

but the package is part of Raspbian Stretch:

Code: Select all

sudo apt-get install mingw-w64
There is no update available. :(

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 3:10 pm
by PB
Sorry, I have no idea about developing on that machine, did not even know it <strike>ran</strike> could be used to develop for MSW.

Can you not just patch the file by yourself, assuming you are even using the same MinGW
https://sourceforge.net/p/mingw-w64/min ... f32b13702/

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 3:15 pm
by rocrail
The uuid.c is not include as source but as library: libuuid.a
I'm not planing to build MINGW from source.
The supplied MINGW version is 6.30...

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 3:19 pm
by PB
Well, if the version you have is unusable and you do not / cannot want to use a newer version, I have no idea how to proceed. Perhaps someone else will...

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 3:39 pm
by rocrail
The compiler works; Daily builds are made for Windows 32 and 64bit.
But since I try to include the wxWebView into the wxWidgets library, it comes to those errors.
The extra configure options I added are for webview and webkit...
The build process is OK, but the wx sample, webview, does report the link errors.

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 4:25 pm
by doublemax
Webkit is not available under Windows. Try without "-enable-webkit", but i don't think that's the issue here.

BTW: Are you cross-compiling for Windows on a Raspberry?

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 5:53 pm
by rocrail
Hi,

The Windows builds are always cross compiled, and this works very good for years on a Raspberry Pi.

Because I want to use wxWebView in my application, I looking for a way to get this also working under Windows.

Which configure options should be set, and which should be left out?

My latest cross compile test was under Raspbian Buster, and there were no link errors.
But starting the minimal.exe or webview.exe under Windows 10 pops up an error 0xc000007b and will not run...

https://www.techcrises.com/how-to/how-t ... s-7-8-8-1/

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 6:09 pm
by doublemax
Error 0xc000007b is most likely some kind of DLL mismatch. E.g. exe is 32bit, but DLLs are 64bit. Try to research in that direction. Sorry, but i can't be more specific.

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 8:10 pm
by rocrail
OK, I solved it by adding -static in the link command.
Now minimal.exe and webview.exe do run on a native Windows 10 64bit computer.

But... It does n ot support *mjpg, video streaming, which works fine under macOS and Linux.
Also the standard browser of Windows 10 does support this format.

I used --enable-webvieie too at configure; Should I leave this out?

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 8:28 pm
by rocrail
Could this call help?

wxWebView::MSWSetEmulationLevel ( wxWebViewIE_EmulationLevel level = wxWEBVIEWIE_EMU_IE11 )

https://docs.wxwidgets.org/trunk/classw ... c8d9b67f8c

Re: wxWebView and Windows

Posted: Wed Jul 31, 2019 8:56 pm
by doublemax
rocrail wrote:
Wed Jul 31, 2019 8:28 pm
Could this call help?
wxWebView::MSWSetEmulationLevel ( wxWebViewIE_EmulationLevel level = wxWEBVIEWIE_EMU_IE11 )
I don't know, but should be easy enough to try out.

Re: wxWebView and Windows

Posted: Thu Aug 01, 2019 6:04 am
by rocrail
I did give it a try, but at startup a warning pops up:
Failed to find web view emulation level in the registry
This popup comes for both MSWSetEmulationLevel and MSWSetModernEmulationLevel.
The registry item where wxWidgets is looking for does not exist under Windows 10: Its not in CURRENT_USER but in LOCAL_MACHINE.

Code: Select all

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
Any ideas?

Re: wxWebView and Windows

Posted: Thu Aug 01, 2019 6:23 am
by doublemax
By default, this registry entry does not exist. I'd say this method is pretty useless if it throws an error in this case :)

Use this code. You need to replace "webview.exe" with the name of your executable. And you must call this before creating the wxWebView.

Code: Select all

#ifdef __WXMSW__
{
  wxLogNull nolog;   // suppress error messages
  wxRegKey rk( wxT("HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION") );
  rk.SetValue( wxT("webview.exe"), 11001);
}
#endif