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