|
-
June 22nd, 2008, 05:06 PM
#1
Explicit Linking Problem
Hello;
I am trying to understand the concept of "Explicit Linking" but the following code gives the error error C2365: 'GetLogicalDrives' : redefinition; previous definition was 'function'
Other API functions such as FindFirstVolume, FindNextVolume, FindVolumeClose etc works properly.
Any ideas ?
Code:
#include <windows.h>
#include <stdio.h>
DWORD (WINAPI *GetLogicalDrives) (VOID);
int main()
{
// Load the dll
HMODULE hmod;
if((hmod = LoadLibrary(TEXT("Kernel32.dll"))))
{
if((GetLogicalDrives = (DWORD (WINAPI*)(VOID))GetProcAddress(hmod,"GetLogicalDrives")))
{
DWORD drivesId = GetLogicalDrives();
}
}
return 0;
}
-
June 22nd, 2008, 08:26 PM
#2
Re: Explicit Linking Problem
There is a function called GetLogicalDrives() in winbase.h which your project probably includes. Just choose a different name.
s
-
June 23rd, 2008, 06:01 AM
#3
Re: Explicit Linking Problem
Ah my foolishness :/
Thanks for the solution.
-
June 24th, 2008, 02:41 AM
#4
Re: Explicit Linking Problem
Besides, kernel32.dll is always loaded into any process, so you'd better use GetModuleHandle instead. 
And once you use LoadLibrary, please don't forget to FreeLibrary as complementary action. This must become your the most basic instinct to treat resources right.
Best regards,
Igor
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|