| Thread overview | |||||||
|---|---|---|---|---|---|---|---|
|
August 10, 2005 Linker doesn't find a Win32 API function | ||||
|---|---|---|---|---|
| ||||
I'm trying to use the SetFilePointerEx function from Win32 API in a piece of D software, like this:
<code>
extern (Windows)
{
BOOL SetFilePointerEx(
HANDLE hFile,
long distanceToMove,
long* newFilePointer,
DWORD moveMethod);
}
</code>
According to Win32 API specs from MSDN such a function exists, but the linker gives an error when trying to compile the program:
Error 42: Symbol Undefined _SetFilePointerEx@20
I'm guessing the KERNEL32.LIB in the DMC package doesn't include the more recent (W2k+) Win32 API functions.
What can I do here? Do I need to make a custom KERNEL32.LIB for my project? And if I do, how do I do that?
--
Niko Korhonen
SW Developer
| ||||
August 10, 2005 Re: Linker doesn't find a Win32 API function | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Niko Korhonen | I don't know if that's the ultimate solution, but IMPORTS section in .def file works. Eg. EXETYPE NT SUBSYSTEM WINDOWS IMPORTS _Direct3DCreate9@4=d3d9.Direct3DCreate9 You need _SetFilePointerEx@20=<Dmudule>.SetFilePointerEx ElfQT "Niko Korhonen" <niktheblak@hotmail.com> wrote in message news:ddcsnp$2p2v$1@digitaldaemon.com... > I'm trying to use the SetFilePointerEx function from Win32 API in a piece of D software, like this: > > <code> > extern (Windows) > { > BOOL SetFilePointerEx( > HANDLE hFile, > long distanceToMove, > long* newFilePointer, > DWORD moveMethod); > } > </code> > > According to Win32 API specs from MSDN such a function exists, but the linker gives an error when trying to compile the program: > > Error 42: Symbol Undefined _SetFilePointerEx@20 > > I'm guessing the KERNEL32.LIB in the DMC package doesn't include the more recent (W2k+) Win32 API functions. > > What can I do here? Do I need to make a custom KERNEL32.LIB for my project? And if I do, how do I do that? > > -- > Niko Korhonen > SW Developer | |||
August 10, 2005 Re: Linker doesn't find a Win32 API function | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Niko Korhonen | Yes. make a custom KERNEL32.LIB // file your_kernel32.def LIBRARY 'KERNEL32.DLL' EXPORTS _SetFilePointerEx@20 = SetFilePointerEx // end of file your_kernel32.def run in the command line: implib.exe your_kernel32.lib your_kernel32.def then link with your_kernel32.lib and the kernel32.lib comes with DMC implib.exe is "Digital Mars Import Library Manager". It comes with DMC or can be download from D page ftp://ftp.digitalmars.com/bup.zip "Niko Korhonen" <niktheblak@hotmail.com> ??????:ddcsnp$2p2v$1@digitaldaemon.com... > I'm trying to use the SetFilePointerEx function from Win32 API in a piece of D software, like this: > > <code> > extern (Windows) > { > BOOL SetFilePointerEx( > HANDLE hFile, > long distanceToMove, > long* newFilePointer, > DWORD moveMethod); > } > </code> > > According to Win32 API specs from MSDN such a function exists, but the linker gives an error when trying to compile the program: > > Error 42: Symbol Undefined _SetFilePointerEx@20 > > I'm guessing the KERNEL32.LIB in the DMC package doesn't include the more recent (W2k+) Win32 API functions. > > What can I do here? Do I need to make a custom KERNEL32.LIB for my project? And if I do, how do I do that? > > -- > Niko Korhonen > SW Developer | |||
August 10, 2005 Re: Linker doesn't find a Win32 API function | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Shawn Liu | BTW, it should be
_SetFilePointerEx@16
since D's long is a 64 bit variable, while long in WIN32 is 32 bit change the declaration as
extern (Windows)
{
BOOL SetFilePointerEx(
HANDLE hFile,
int distanceToMove,
int* newFilePointer,
DWORD moveMethod);
}
"Shawn Liu" <liuxuhong.cn@gmail.com> wrote:ddd8qv$8p9$1@digitaldaemon.com...
> Yes. make a custom KERNEL32.LIB
>
> // file your_kernel32.def
> LIBRARY 'KERNEL32.DLL'
> EXPORTS
> _SetFilePointerEx@20 = SetFilePointerEx
> // end of file your_kernel32.def
>
> run in the command line:
> implib.exe your_kernel32.lib your_kernel32.def
>
> then link with your_kernel32.lib and the kernel32.lib comes with DMC
>
> implib.exe is "Digital Mars Import Library Manager".
> It comes with DMC or can be download from D page
> ftp://ftp.digitalmars.com/bup.zip
>
>
>
>
>
>
>
> "Niko Korhonen" <niktheblak@hotmail.com> ??????:ddcsnp$2p2v$1@digitaldaemon.com...
>> I'm trying to use the SetFilePointerEx function from Win32 API in a piece of D software, like this:
>>
>> <code>
>> extern (Windows)
>> {
>> BOOL SetFilePointerEx(
>> HANDLE hFile,
>> long distanceToMove,
>> long* newFilePointer,
>> DWORD moveMethod);
>> }
>> </code>
>>
>> According to Win32 API specs from MSDN such a function exists, but the linker gives an error when trying to compile the program:
>>
>> Error 42: Symbol Undefined _SetFilePointerEx@20
>>
>> I'm guessing the KERNEL32.LIB in the DMC package doesn't include the more recent (W2k+) Win32 API functions.
>>
>> What can I do here? Do I need to make a custom KERNEL32.LIB for my project? And if I do, how do I do that?
>>
>> --
>> Niko Korhonen
>> SW Developer
>
>
| |||
August 10, 2005 Re: Linker doesn't find a Win32 API function | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Shawn Liu | _SetFilePointerEx@20 is right.
I checked MSDN again. LARGE_INTEGER is 64 bit.
Sorry for my carelessness.
>> "Niko Korhonen" <niktheblak@hotmail.com> ??????:ddcsnp$2p2v$1@digitaldaemon.com...
>>> I'm trying to use the SetFilePointerEx function from Win32 API in a piece of D software, like this:
>>>
>>> <code>
>>> extern (Windows)
>>> {
>>> BOOL SetFilePointerEx(
>>> HANDLE hFile,
>>> long distanceToMove,
>>> long* newFilePointer,
>>> DWORD moveMethod);
>>> }
>>> </code>
>>>
>>> According to Win32 API specs from MSDN such a function exists, but the linker gives an error when trying to compile the program:
>>>
>>> Error 42: Symbol Undefined _SetFilePointerEx@20
>>>
>>> I'm guessing the KERNEL32.LIB in the DMC package doesn't include the more recent (W2k+) Win32 API functions.
>>>
>>> What can I do here? Do I need to make a custom KERNEL32.LIB for my project? And if I do, how do I do that?
>>>
>>> --
>>> Niko Korhonen
>>> SW Developer
>>
>>
>
>
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply