"ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï ¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½" wrote:
Hi all!
I have a Dll like this:
Then you probably have an implementation problem, not a C problem. For
those you need to ask in an implementation-specific newsgroup. You are
lucky, since there a several specifically for windows programming.
DLLs, in particular, are implementation details that have nothing at all
to do with C.
#include <windows.h>
^^^^^^^^^^^
Note that <windows,his no part of the C language. It is, however,
part of the the Windows interface to that particular operating system.
#include <stdio.h>
#include <stdlib.h>
__declspec (dllexport) int Add (int n)
^^^^^^^^^^ ^^^^^^^^^
And neither __declspec nor dllexport mean anything at all in C. They
may be defined in the <windows.hheader, but we can;t see them.
{
int x;
x = 100 + n;
return x;
}
The body of this function could be collapsed down to
{ return 100 + n; }
The variable x serves no purpose at all.
And I use this to call the Dll:
#include "windows.h"
^^^^^^^^^^
#include "stdio.h"
^^^^^^^
Unless you have your own personal copies of <windows.hand <stdio.h>
that differ from the implementation-provided ones, and you mean to use
those instead of the implementation-provided headers, the "..." form is
almost always wrong.
>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int iCmdShow)
And look at all the things in that one line that have no meaning in C
without provided definitions, which you have not shown us. Those
include WINAPI, WinMain, HINSTANCE, and LPSTR. Note that all C programs
have a main() function in a hosted environment. You do not have one,
but are using WinMain(). You are using a C-like language designed for
use only in one particular environment. Newsgroups for that environment
abound.
{
HINSTANCE hAdd;
FARPROC Add;
FARPROC doesn't mean anything either.
>
if(hAdd= LoadLibrary ("Add.dll"))
{
Add = GetProcAddress (hAdd, "Add");
printf ("%i\n", Add(100));
FreeLibrary (hAdd);
}
}
After compiling,there is an error:too many arguments to function.
When you ask this in the right place, be sure to tell them the actual
error message. You seem to have at least the functions LoadLibrary,
GetProcAddess, printf, and FreeLibrary, only one of those, printf, has a
defined meaning in C. You need to determine _which_ function has too
many arguments. You should then look up those functions in your
documentation. The only defined C function does not have the wrong
number of arguments, so it must be one of those implementation-provided
functions, so look in your implementation documentation. No C reference
can help you.