It means that the code for that function is written (and more importantly, compiled) in C.
Now that you want to use it from C++ the function definition is the same as far as the compiler is concerned
WINAPI *const RawDllMain(HINSTANCE, DWORD, LPVOID)
in both C and C++, however due to extensions in C++ that allow for function overriding, the symbol name for the linker is different.
In C, the symbol name will be either
RawDllMain
or
_RawDllMain
depending on the convention used.
In C++, parameter and return types are "mangled" into the name, making the C++ name
?RawDllMain@@YGHPAUHINSTANCE__@@KPAX@Z
. The encoded variable types are easier to spot when using custom types like structs or classes.
If you were then to call the function
RawDllMain
from the DLL, the function name that you would search for depends on your language, C or C++.
If you are using
GetProcAddress
then you would need to search for the function
?RawDllMain@@YGHPAUHINSTANCE__@@KPAX@Z
if you did not use
extern "C"
.
There are other uses for this too.
If you are using a 3rd party library that is written in C and you want to use it from C++ then you may need to wrap
extern "C" {
#include "the_lib\lib.h"
}
around the includes for that library for the same reasons. Often these libraries would automatically do this however.