Help with simple winelib dll
Seth Shelnutt
shelnutt2 at gmail.com
Wed Jun 16 07:38:29 CDT 2010
Seth,
Take a look at the source code to the CUDA 3.0 wrapper I just finished. You
have some mistakes in your coding and this should help provide you a better
example. When I first was coding the CUDA 2.0 wrapper some people told me to
look at opengl and how it was wrapper to the linux library so that is how I
came up with this.
http://shelnutt2.host56.com/wrapper.tar.gz
Generally the specfile goes like
@ stdcall cudaGetDeviceProperties( ptr long ) wine_cudaGetDeviceProperties
Then in your .c file:
cudaError_t WINAPI wine_cudaGetDeviceProperties(
struct cudaDeviceProp *prop, int device) {
WINE_TRACE("\n");
return cudaGetDeviceProperties(prop, device);
}
Also your linking looks off. You shouldn't be linking -l"." . You need to
specify the exact file, like for CUDA we did -lcudart or -lcufft.
I hope that help you some.
-Seth Shelnutt
On Wed, Jun 16, 2010 at 2:04 AM, Seth Burleigh <seth at tewebs.com> wrote:
> Im attempting to build a dll which a windows program running under wine
> can dynamically load. The dll will be a wrapper around a linux library.
> In preparation ive tried to follow the instructions here
> http://www.winehq.org/docs/winelib-guide/bindlls
> with a simple example but have not succeeded. Below is the contents of
> the files in my directory and the commands i executed. Can anyone help
> out? Thanks!
>
>
>
> MyLinuxFunc.c
> int MyLinuxFunc(int a,int b) {
> return a+b;
> }
> -----------------------------
> MyLinuxFunc.h
> int MyLinuxFunc(int,int);
> -----------------------------
> libMyLinuxFunc.so
> -----------------------------
> MyWin.dll.spec
> 2 stdcall MyWinFunc (long long) MyProxyWinFunc
> -----------------------------
> MyWin.c
>
> #include <MyLinuxFunc.h>
> #include <windef.h>
> int WINAPI MyProxyWinFunc (int a,int b)
> {
> return MyLinuxFunc(a,b);
> }
> -----------------------------
>
>
> winemaker . --nosource-fix --dll --single-target MyWin --nomfc -I"."
> -L"." -iMyLinuxFunc
>
> make
> winegcc -o MyWin.so MyLinuxFunc.o MyWin.o -L. -lMyLinuxFunc
> MyWin.o: In function `MyProxyWinFunc':
> MyWin.c:(.text+0x20): undefined reference to `MyLinuxFunc'
> /usr/lib/wine/libwinecrt0.a(exe_main.o): In function `main':
> (.text+0xa0): undefined reference to `WinMain'
> collect2: ld returned 1 exit status
> winegcc: i486-linux-gnu-gcc failed
> make: *** [MyWin.so] Error 2
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20100616/6d7c8c86/attachment.htm>
More information about the wine-devel
mailing list