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