Winelib Program with DLL problem
Boaz Harrosh
boaz at hishome.net
Mon Dec 22 04:00:05 CST 2003
I have stdcall working fine here.
There is something wrong with your DLL the fact that "pexports" dumped
"_" before symbol names is a clue to those functions been exported as
cdecl. In stdcall (or PASCAL) no under-scored is perpended. (and you
should see the @number at end of names). check to see how this DLL was
compiled on windows (or wine). Was it compiled with a .DEF file?
Kevin Atkinson wrote:
>I am having a problem compiling a simple winelib program which relies on
>a dll which uses the stdcall calling convention. I used pexports on the
>dll avisynth_c.dll to created the spec and then edited the file to removed
>the leading underscore in the names (without that it would not link).
>That file is attached. Than with only "avisynth_c.h", "avs2yuv.cpp" and
>"libavisynth_c.def" in the current directory. I ran
> winemaker --console -iavisynth_c --single-target avs2yuv.exe .
> ./configure --with-wine=/opt/wine/
> make
>then I copy the required DLL in the current directory and attempt to run
>it. But I get:
>
>./avs2yuv
>err:module:import_dll No implementation for
>avisynth_c.dll.avs_create_script_environment imported from
>L"C:\\WINDOWS\\SYSTEM\\avs2yuv.exe", setting to 0xdeadbeef
>err:module:import_dll No implementation for avisynth_c.dll.avs_get_frame
>imported from L"C:\\WINDOWS\\SYSTEM\\avs2yuv.exe", setting to 0xdeadbeef
>err:module:import_dll No implementation for
>avisynth_c.dll.avs_get_video_info imported from
>L"C:\\WINDOWS\\SYSTEM\\avs2yuv.exe", setting to 0xdeadbeef
>err:module:import_dll No implementation for avisynth_c.dll.avs_invoke
>imported from L"C:\\WINDOWS\\SYSTEM\\avs2yuv.exe", setting to 0xdeadbeef
>err:module:import_dll No implementation for
>avisynth_c.dll.avs_release_value imported from
>L"C:\\WINDOWS\\SYSTEM\\avs2yuv.exe", setting to 0xdeadbeef
>err:module:import_dll No implementation for
>avisynth_c.dll.avs_release_video_frame imported from
>L"C:\\WINDOWS\\SYSTEM\\avs2yuv.exe", setting to 0xdeadbeef
>err:module:import_dll No implementation for avisynth_c.dll.avs_take_clip
>imported from L"C:\\WINDOWS\\SYSTEM\\avs2yuv.exe", setting to 0xdeadbeef
>Usage avs2yuv4mpeg <avsfile> <outfile>
>
>Does anyone know what is going on. Here is the output of make if it will
>help:
>
>sed -e 's, at bindir\@,/usr/local/bin,g' -e 's, at winelibdir\@,.,g'
>./wineapploader.in >wineapploader || rm -f wineapploader
>LD_LIBRARY_PATH="/opt/wine//lib:$LD_LIBRARY_PATH" /opt/wine//bin/winebuild
>-o avs2yuv.exe.dbg.c --debug -C. avs2yuv.cpp
>gcc -c -I. -I/opt/wine//include/wine/windows -g -O2 -fPIC
>-D_REENTRANT -o avs2yuv.exe.dbg.o avs2yuv.exe.dbg.c
>g++ -c -I. -I/opt/wine//include/wine/windows -g -O2 -fpermissive
>-fno-for-scope -D_REENTRANT -o avs2yuv.o avs2yuv.cpp
>LD_LIBRARY_PATH="/opt/wine//lib:$LD_LIBRARY_PATH" /opt/wine//bin/winebuild
>-fPIC -o avs2yuv.exe.spec.c --exe avs2yuv.exe -mcui avs2yuv.o
>-L/opt/wine//lib/wine -lavisynth_c
>gcc -c -I. -I/opt/wine//include/wine/windows -g -O2 -fPIC
>-D_REENTRANT -o avs2yuv.exe.spec.o avs2yuv.exe.spec.c
>g++ -shared -Wl,-Bsymbolic -o avs2yuv.exe.so avs2yuv.o avs2yuv.exe.dbg.o
>avs2yuv.exe.spec.o -L/opt/wine//lib -lwine -lwine_unicode
>-lwine_uuid -lm
>test -f avs2yuv || install ./wineapploader avs2yuv
>
>I attached the zip file with the source and any files I thought were
>relevant. If required I can send additional files dll's in a private
>email (such as the required dll's).
>
>Wine version 20031212 built from source on a RedHat System. I had the
>exact same problem when I used the debs from unstable (also
>version 20031212) on a libranet system.
>
>Is this a bug, or am I doing something wrong?
>
>When I used a a version of avisynth_c.dll which used cdecl on all API
>functions -- without changing the .def or header files -- instead of
>stdlib I do not have this problem. Naturally I do not expect it to run
>since I didn't recompile my code with the proper header files. I discovered
>this by accident because the previous version used cdecl and I had some
>old dll laying around in a place wine was able to find.
>
>Can anyone help me get this working? Am I doing something wrong or is
>this a bug in wine?
>
>Thanks in advance.
>---
>http://kevin.atkinson.dhs.org
>
>
>------------------------------------------------------------------------
>
>LIBRARY avisynth_c.dll
>
>
>EXPORTS
>
> AvisynthPluginInit2 at 4 @1
>
> avs_add_function at 20 @2
>
> avs_at_exit at 12 @3
>
> avs_bit_blt at 28 @4
>
> avs_check_version at 8 @5
>
> avs_clip_get_error at 4 @6
>
> avs_copy_clip at 4 @7
>
> avs_copy_value at 12 @8
>
> avs_copy_video_frame at 4 @9
>
> avs_create_script_environment at 4 @10
>
> avs_function_exists at 8 @11
>
> avs_get_audio at 24 @12
>
> avs_get_cpu_flags at 4 @13
>
> avs_get_frame at 8 @14
>
> avs_get_parity at 8 @15
>
> avs_get_var at 8 @16
>
> avs_get_version at 4 @17
>
> avs_get_video_info at 4 @18
>
> avs_invoke at 20 @19
>
> avs_make_writable at 8 @20
>
> avs_new_c_filter at 20 @21
>
> avs_new_video_frame_a at 12 @22
>
> avs_release_clip at 4 @23
>
> avs_release_value at 8 @24
>
> avs_release_video_frame at 4 @25
>
> avs_save_string at 12 @26
>
> avs_set_cache_hints at 12 @27
>
> avs_set_global_var at 16 @28
>
> avs_set_memory_max at 8 @29
>
> avs_set_to_clip at 8 @30
>
> avs_set_var at 16 @31
>
> avs_set_working_dir at 8 @32
>
> avs_subframe at 24 @34
>
> avs_take_clip at 12 @35
>
> avs_vsprintf at 12 @36
>
> avs_sprintf @33
>
>
>
More information about the wine-devel
mailing list