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.
Seemingly Similar 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.