I'm studing wine for my thesis but I've an question: if I can use native dll for an application because are there many builtin dll in usr/lib/wine? I understand for system dll like kernel32.dll, user32.dll etc Thanks.
On Thu, Jul 24, 2008 at 2:39 PM, Batt212 <wineforum-user at winehq.org> wrote:> I'm studing wine for my thesis but I've an question: if I can use native dll for an application because are there many builtin dll in usr/lib/wine? I understand for system dll like kernel32.dll, user32.dll etc >I am not sure I understand the question. Yes you can use a native dll for a dll that wine provides as a builtin (well except for a few directx ... ) but it is usually better that you do not do this. John
Batt212 at Jul 24, 2008 11:39 AM (MST) said about [Wine] Native and Builtin dll> >I'm studing wine for my thesis but I've an question: if I can use native dll for an application because are there many builtin dll in usr/lib/wine? I understand for system dll like kernel32.dll, user32.dll etcYou can substitute some of the Wine built-in dlls but you may create additional problems. A well known problem is RichText functionality with the riched20.dll and riched32.dll being incomplete. You may not substitute the system dll's as this MAY violate the EULA from MA and WILL break Wine. The best way to test whether or not built-in dll substitution is to place the native dll in the program directory and not /windows/system32 and run Winecfg to add the program and then change the dll from built-in only to native then built-in. This should also be available on the Wine HQ web site FAQ. Hope this helps with your thesis. James McKenzie
Ok, I didn't write bad my question. If I've source code for an dll I can produce a builtin dll (with winelib) but if I dot not have it I must use only native dll. For example I copy and paste an exe file into linux enviroment and run it. If it founds its dll it goes otherwise no. Why cannot I take iexplorer.exe and its dlls and run it? Thanks.
Batt212 wrote:> Ok, I didn't write bad my question. If I've source code for an dll I can produce a builtin dll (with winelib)Not correct. Wine built-in dlls are those dlls that are part of Wine itself. Everything else is a native DLL. Batt212 wrote:> but if I dot not have it I must use only native dll.If Wine doesn't have such dll, then yes you have to use native dll instead. Batt212 wrote:> For example I copy and paste an exe file into linux enviroment and run it.Not correct. You don't copy anything. Most programs have to be properly installed with their installer. This is true even on windows. Batt212 wrote:> Why cannot I take iexplorer.exe and its dlls and run it?This is special case. IE is a part of the system and depends on big number of undocumented functions. And to run it you have to replace big parts of Wine. This is strongly discouraged. Especially in this case, since Wine has it's own IE replacement.
Vitally: Good explanation. Is this not covered in a FAQ on the Wine HQ site? James McKenzie vitamin on Jul 24, 2008 12:44 PM (MST) wrote about Native and Builtin dll:> > >Batt212 wrote: >> Ok, I didn't write bad my question. If I've source code for an dll I can produce a builtin dll (with winelib) > >Not correct. Wine built-in dlls are those dlls that are part of Wine itself. Everything else is a native DLL. >This should also be expanded to state: Any dll that is a part of the Wine package is a built-in dll. Substitution with a dll that is part of any Windows distribution is considered a native replacement. Installation packages may also install dlls in the installation directory. These are also considered native dlls.> >Batt212 wrote: >> but if I dot not have it I must use only native dll. > >If Wine doesn't have such dll, then yes you have to use native dll instead. >Correct. Wine does not, at this time, include all of the dlls distributed with Windows or any installation product. Windows does not ship with some dlls, such as the Visual C++/Visual C#/Visual J# dlls. These dlls are normally included with the product as part of the installation package.> >Batt212 wrote: >> For example I copy and paste an exe file into linux enviroment and run it. > >Not correct. You don't copy anything. Most programs have to be properly installed with their installer. This is true even on windows. >This really needs to be pointed out. You CANNOT just copy a program from a Windows installation to a Wine installation. You CANNOT just point to your Windows Program Files directory and run a program from there. And lastly you CANNOT just overlay a Wine installation with a Windows installation for many reasons, the main one is that you will break Wine and prevent it from running.> >Batt212 wrote: >> Why cannot I take iexplorer.exe and its dlls and run it? > >This is special case. IE is a part of the system and depends on big number of undocumented functions. And to run it you have to replace big parts of Wine. This is strongly discouraged. Especially in this case, since Wine has it's own IE replacement. >You can try to use ies4linux/ies4MacOSX to run IE. However, unless you really require IE functionality, use FireFox instead.
thank you vitamin, but I've tryed copy and paste an free simple program HoverSnap.exe and its HoverKHook.dll and I didn't installed anything else and It runs. However, i've understand that built-in dlls are of use Wine and they are implementation of the Windows API. For my thesis I find a simple program for windows that dump an exe file and this is dump's HoverSnap.exe. Is correct to say that wine look for dll reading into exe file? in fact, here all built-in dlls are listed and only one is native. Imports Table: KERNEL32.DLL OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FD9D4 Ordn Name 0 LoadLibraryA 0 GetProcAddress 0 ExitProcess advapi32.dll OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FD9E4 Ordn Name 0 RegCloseKey comctl32.dll OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FD9EC Ordn Name 0 ImageList_Add gdi32.dll OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FD9F4 Ordn Name 0 SaveDC HoverKHook.dll OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FD9FC Ordn Name 0 StopHook ole32.dll OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FDA04 Ordn Name 0 IsEqualGUID oleaut32.dll OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FDA0C Ordn Name 0 VariantClear shell32.dll OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FDA14 Ordn Name 0 ShellExecuteA user32.dll OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FDA1C Ordn Name 0 GetDC version.dll OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FDA24 Ordn Name 0 VerQueryValueA winmm.dll OrigFirstThunk: 00000000 (Unbound IAT) TimeDateStamp: 00000000 -> Thu Jan 01 01:00:00 1970 ForwarderChain: 00000000 First thunk RVA: 000FDA2C Ordn Name 0 PlaySoundA
Chris MacKay wrote:> Wine DLLs are "fake"Not really. Wine dlls are as real as it gets, only in the different file format (ELF instead of PE). And no they don't just pass some windows calls. Wine _reimplements_ windows API on top of POSIX. What I was referring to as a "fake dlls" are the dlls Wine itself creates in system32 (and other) directories. Those are real PE dlls, just have no code in them, only resources.
Possibly Parallel Threads
- Windows "0xC00001A5: An invalid exception handler routine has been detected" with LLVM win32 (i386) SEH code
- Windows "0xC00001A5: An invalid exception handler routine has been detected" with LLVM win32 (i386) SEH code
- Rsync Problem mith UNC paths
- llvm pdb utility question - how to convert real address to a segmented one
- [LLVMdev] [lld] Atom object model refactoring.