Click here to Skip to main content
15,890,579 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
Question2 classes Pin
Sam 20065-Mar-06 5:08
Sam 20065-Mar-06 5:08 
AnswerRe: 2 classes Pin
darkelv5-Mar-06 5:14
darkelv5-Mar-06 5:14 
AnswerRe: 2 classes Pin
Michael Dunn5-Mar-06 6:20
sitebuilderMichael Dunn5-Mar-06 6:20 
Answersolution Pin
Sam 20065-Mar-06 6:24
Sam 20065-Mar-06 6:24 
GeneralRe: solution Pin
John R. Shaw5-Mar-06 14:30
John R. Shaw5-Mar-06 14:30 
GeneralRe: solution Pin
Divyang Mithaiwala5-Mar-06 17:23
Divyang Mithaiwala5-Mar-06 17:23 
QuestionDisplaying OpenGL terrain in MFC Pin
amanoullah5-Mar-06 4:32
amanoullah5-Mar-06 4:32 
QuestionOverloaded functions in DLL Pin
Eikthrynir5-Mar-06 2:59
Eikthrynir5-Mar-06 2:59 
Hi! I have a problem using a few overloaded functions located in a DLL that I created. The source code for the DLL looks like this:

/* myDll.h */<br />
#if defined MYDLL_EXPORTS<br />
  #define MYDLL_API   __declspec( dllexport )<br />
#else<br />
  #define MYDLL_API   __declspec( dllimport )<br />
#endif<br />
<br />
MYDLL_API __int8 __cdecl readNumber( __int32 &destinationNumber );<br />
MYDLL_API __int8 __cdecl readNumber( double &destinationNumber );


The next lines go in myDll.cpp:

/* myDll.cpp */<br />
#include <iostream><br />
#include "myDll.h"<br />
<br />
MYDLL_API __int8 __cdecl readNumber( __int32 &destinationNumber )<br />
{<br />
  std::cin >> destinationNumber;<br />
  if ( std::cin.bad( ) )<br />
    return 0;<br />
<br />
  return 1;<br />
}<br />
<br />
MYDLL_API __int8 __cdecl readNumber( double &destinationNumber )<br />
{<br />
  std::cin >> destinationNumber;<br />
  if ( std::cin.bad( ) )<br />
    return 0;<br />
<br />
  return 1;<br />
}


It works just fine if I use load-time linking (by linking the myDll.lib too). But what I want to do is use run-time linking, like below:

/* DllUser.cpp */<br />
#include <windows.h><br />
#include "myDll.h"<br />
<br />
typedef __int8 (__cdecl *ReadInt32NumberFunction( __int32 &destinationNumber );<br />
typedef __int8 (__cdecl *ReadDoubleNumberFunction( double &destinationNumber );<br />
<br />
int main( void )<br />
{<br />
  HMODULE moduleHandle;<br />
  ReadInt32NumberFunction readInt32Number;<br />
  ReadDoubleNumberFunction readDoubleNumber;<br />
  __int32 int32Value;<br />
  double  doubleValue;<br />
<br />
  moduleHandle = LoadLibrary( "myDll.dll" );<br />
  if ( moduleHandle != NULL )<br />
  {<br />
    readInt32Number = (ReadInt32NumberFunction)GetProcAddress( moduleHandle, "readNumber" );<br />
    readDoubleNumber = (ReadDoubleNumberFunction)GetProcAddress( moduleHandle, "readNumber" );<br />
    FreeLibrary( moduleHandle );<br />
  }<br />
<br />
  return 0;<br />
}


The problem is that both readInt32Number and readDoubleNumber are NULL after calling GetProcAddress. It works if I declare those two functions as extern "C" in myDll.cpp, but then, I cannot use function overloading.
Another problem is that if I want to call readNumber( ) with a __int32 and a double parameter, I must do something like this:

readInt32Number( int32Value );<br />
readDoubleNumber( doubleValue );


I would like to use those two overloaded functions with their own names, like this:

readNumber( int32Value );<br />
readNumber( doubleValue );


Even though all these problems are solved using load-time linking, I DO NOT want to use it. Instead, I would like run-time linking, with LoadLibrary(), GetProcAddress() and FreeLibrary().

Can anyone help me with this, please? Thanks in advance!
AnswerRe: Overloaded functions in DLL Pin
Gary R. Wheeler5-Mar-06 3:45
Gary R. Wheeler5-Mar-06 3:45 
AnswerRe: Overloaded functions in DLL Pin
Michael Dunn5-Mar-06 6:25
sitebuilderMichael Dunn5-Mar-06 6:25 
Questioninteger to string? Pin
Pacificat0r5-Mar-06 2:02
Pacificat0r5-Mar-06 2:02 
AnswerRe: integer to string? Pin
Gary R. Wheeler5-Mar-06 2:22
Gary R. Wheeler5-Mar-06 2:22 
AnswerRe: integer to string? Pin
Stephen Hewitt5-Mar-06 2:35
Stephen Hewitt5-Mar-06 2:35 
AnswerRe: integer to string? Pin
Michael Dunn5-Mar-06 6:27
sitebuilderMichael Dunn5-Mar-06 6:27 
AnswerRe: integer to string? Pin
John R. Shaw5-Mar-06 14:46
John R. Shaw5-Mar-06 14:46 
AnswerRe: integer to string? Pin
Pacificat0r7-Mar-06 10:52
Pacificat0r7-Mar-06 10:52 
QuestionPorting from WinInet to WinHttp 5.1 Pin
shaylin5-Mar-06 2:02
shaylin5-Mar-06 2:02 
Questionreading a string from an unknown position in a file Pin
SWDevil5-Mar-06 1:30
SWDevil5-Mar-06 1:30 
AnswerRe: reading a string from an unknown position in a file Pin
Gary R. Wheeler5-Mar-06 2:13
Gary R. Wheeler5-Mar-06 2:13 
GeneralRe: reading a string from an unknown position in a file Pin
SWDevil5-Mar-06 2:27
SWDevil5-Mar-06 2:27 
GeneralRe: reading a string from an unknown position in a file Pin
Gary R. Wheeler5-Mar-06 2:53
Gary R. Wheeler5-Mar-06 2:53 
GeneralRe: reading a string from an unknown position in a file Pin
Stephen Hewitt5-Mar-06 17:13
Stephen Hewitt5-Mar-06 17:13 
GeneralRe: reading a string from an unknown position in a file Pin
SWDevil5-Mar-06 20:06
SWDevil5-Mar-06 20:06 
GeneralRe: reading a string from an unknown position in a file Pin
Stephen Hewitt5-Mar-06 20:24
Stephen Hewitt5-Mar-06 20:24 
GeneralRe: reading a string from an unknown position in a file Pin
SWDevil5-Mar-06 20:52
SWDevil5-Mar-06 20:52 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.