Re: GetProcAddress issues
On Sat, 17 Mar 2007 09:15:52 -0700, "David Ching"
<dc@remove-this.dcsoft.com> wrote:
"MrAsm" <mrasm@usa.com> wrote in message
news:qn3ov29rb2kv2b33rdr589gi14eqdok0qd@4ax.com...
But when the functions you export use __stdcall, the names *do* get
decorated with _ and @ suffix and byte count.
Hmm, I just checked in one of my projects, and I get the opposite. When
declaring the functions as in the previous post, I built the DLL and then
ran on the command-line:
DUMPBIN /exports "mydll.dll"
to list the exports.
It listed them without any decoration whatsoever.
But I believe this is because your functions are *not* __stdcall (they
are __cdecl).
I've just built this demo DLL:
<CODE src="MyDll.cpp">
extern "C" int __declspec(dllexport) TestFunction(int x)
{
return 2*x;
}
extern "C" float __declspec(dllexport) __stdcall TestFunctionStdCall(
float x )
{
return x*x;
}
</CODE>
The function 'TestFunction' (which is __cdecl - as default, as your
function) does not get decorated (OK), *but* the function
'TestFunctionStdCall' (which is __stdcall) does get decorated, as I
wrote above.
You need a .def file in this case to remove decoration. (Or, at least,
I do not know other methods to remove a decoration for __stdcall
functions, different from using a .def file - this is the only case I
use .def files).
MrAsm