...when attempting to build a WineLib application.
Remember, I'm attempting to get something that will run-time link against a native DLL, so I take my code, run it by "winemaker", run "./configure", then "make", all with options I believe to be appropriate. In particular, given export WINEDIR=/home/kevin/wine, the root of my Wine source tree checked out from winehq CVS yesterday, and export DLLINCDIR=/home/kevin/include, then from within the directory containing the C source code for my simple console app I execute the following:
$ winemaker --cuiexe -I${DLLINCDIR} -I${WINEDIR} [...snip...] $ ./configure --with-wine=${WINEDIR} \ --with-wine-dlls=${WINEDIR}/libs/dlls --srcdir=`pwd` \ --with-wine-libraries=${WINEDIR}/libs/wine:${WINEDIR}/libs/uuid:${WINEDIR}/libs/unicode [...snip...] $ make [...snip...]
Until make executes, there seems to be no obvious problem (at least to my eyes), and even then, as the compilation happens, I get a nice file called "prog.o" written.
However, as "winebuild" executes, I see the following:
--- LD_LIBRARY_PATH="/home/kevin/wine/libs/wine:/home/kevin/wine/libs/unicode:$LD_LIBRARY_PATH" /home/kevin/wine/tools/winebuild/winebuild -fPIC -o prog.exe.spec.c --exe prog.exe -mcui prog.o -L/home/kevin/lib -L/home/kevin/lib/wine -ladvapi32 -lcomdlg32 -lgdi32 -lkernel32 -lodbc32 -lole32 -loleaut32 -lshell32 -luser32 -lwinspool could not open .def file for advapi32 ---
I don't believe I even need anything from advapi32.dll.so, let alone most of the other Wine DLLs mentioned on the winebuild command line. Even if I hack the generated Makefile so as to remove mention of any Wine DLLs on the winebuild command line, winebuild still complains about not opening "...a .def file for ntdll".
On a related note, the configure script generated by winemaker complains about test linking against -L${WINEDIR}/dlls -lntdll.dll and subsequent equivalent builtin DLLs such as -lkernel32.dll and -luser32.dll. My quick hack is merely to clone the symbolic links in ${WINEDIR}/dlls to add a "lib" prefix, vis:
$ ( cd ${WINEDIR}/dlls ; ls -l *ntdll.dll* ) lrwxrwxrwx 1 kevin 18 Apr 1 15:29 ntdll.dll.so -> ntdll/ntdll.dll.so lrwxrwxrwx 1 kevin 18 Apr 1 15:29 libntdll.dll.so -> ntdll/ntdll.dll.so $
That keeps configure happy, but I wonder what I'm doing wrong. This is Wine built from CVS as of 20030401 (i.e. yesterday).
Suggestions? Particularly for the wanted .def files. They're %^*&@# builtin DLLs!
-- Kevin.
On April 1, 2003 09:59 pm, Kevin Cousins wrote:
...when attempting to build a WineLib application.
Remember, I'm attempting to get something that will run-time link against a native DLL, so I take my code, run it by "winemaker", run "./configure", then "make", all with options I believe to be appropriate. In particular, given export WINEDIR=/home/kevin/wine, the root of my Wine source tree checked out from winehq CVS yesterday, and export DLLINCDIR=/home/kevin/include, then from within the directory containing the C source code for my simple console app I execute the following:
$ winemaker --cuiexe -I${DLLINCDIR} -I${WINEDIR} [...snip...] $ ./configure --with-wine=${WINEDIR} \ --with-wine-dlls=${WINEDIR}/libs/dlls --srcdir=`pwd` \ --with-wine-libraries=${WINEDIR}/libs/wine:${WINEDIR}/libs/uuid:${WINEDIR}/ libs/unicode [...snip...] $ make [...snip...]
Until make executes, there seems to be no obvious problem (at least to my eyes), and even then, as the compilation happens, I get a nice file called "prog.o" written.
However, as "winebuild" executes, I see the following:
LD_LIBRARY_PATH="/home/kevin/wine/libs/wine:/home/kevin/wine/libs/unicode:$ LD_LIBRARY_PATH" /home/kevin/wine/tools/winebuild/winebuild -fPIC -o prog.exe.spec.c --exe prog.exe -mcui prog.o -L/home/kevin/lib -L/home/kevin/lib/wine -ladvapi32 -lcomdlg32 -lgdi32 -lkernel32 -lodbc32 -lole32 -loleaut32 -lshell32 -luser32 -lwinspool could not open .def file for advapi32
I don't believe I even need anything from advapi32.dll.so, let alone most of the other Wine DLLs mentioned on the winebuild command line. Even if I hack the generated Makefile so as to remove mention of any Wine DLLs on the winebuild command line, winebuild still complains about not opening "...a .def file for ntdll".
On a related note, the configure script generated by winemaker complains about test linking against -L${WINEDIR}/dlls -lntdll.dll and subsequent equivalent builtin DLLs such as -lkernel32.dll and -luser32.dll. My quick hack is merely to clone the symbolic links in ${WINEDIR}/dlls to add a "lib" prefix, vis:
$ ( cd ${WINEDIR}/dlls ; ls -l *ntdll.dll* ) lrwxrwxrwx 1 kevin 18 Apr 1 15:29 ntdll.dll.so -> ntdll/ntdll.dll.so lrwxrwxrwx 1 kevin 18 Apr 1 15:29 libntdll.dll.so -> ntdll/ntdll.dll.so $
That keeps configure happy, but I wonder what I'm doing wrong. This is Wine built from CVS as of 20030401 (i.e. yesterday).
Suggestions? Particularly for the wanted .def files. They're %^*&@# builtin DLLs!
Kevin
Hopefully someone will get back to you today, but here's my (not very useful) additions.
I haven't touched winemaker for probably over six months and in that time it looks like its all changed.
If you don't need any dlls linked in then why are you bothering with winebuild. However if you are using functions that are implemented in dlls (whether in native Microsoft ones or wine builtin ones) then the "linking system" needs to know about them. Since this is not necessarily under VC++ winebuild is going to have to do that, and that is done in the def files.
I see a whole load of def files in my /usr/local/lib/wine; don't you have them there?
Hopefully that will keep you going until one of the experts turns up.