_stdcall :add變爲:_add@8
:add不變
cpp文件沒有聲明extern "C"
_stdcall :add變爲:?add@@YGHHH@Z
:add變爲:?add@@YAHHH@Z
調用:
HINSTANCE hInst;
// hInst=LoadLibrary("lib.dll");
// hInst=LoadLibrary("mylib.dll");
hInst=LoadLibrary("mylib1.dll");
// typedef int ( _stdcall *ADDPROC)(int a, int b);
// typedef int ( _stdcall *ADDPROC)(int a, int b);
typedef int ( *ADDPROC)(int a, int b);
// ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"_add@8");
// ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"_Java_com_ldq_ExJNI_add@16");
ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"?add@@YAHHH@Z");
// ADDPROC Add=(ADDPROC)GetProcAddress(hInst,MAKEINTRESOURCE(1));
k=Add(i,j);
代碼:lib1.c
_declspec (dllexport) int _stdcall add(int i, int j)
{
return i+j;
}
命令:cl /LD lib1.c
生成:lib1.dll
命令:dumpbin -exports lib1.dll
函數名:_add@8
代碼:lib2.c
_declspec (dllexport) int add(int i, int j)
{
return i+j;
}
命令:cl /LD lib2.c
生成:lib2.dll
命令:dumpbin -exports lib2.dll
函數名:add
代碼:lib1.cpp
_declspec (dllexport) int _stdcall add(int i, int j)
{
return i+j;
}
命令:cl /LD lib1.cpp
生成:lib1.dll
命令:dumpbin -exports lib1.dll
函數名:?add@@YGHHH@Z
代碼:lib2.cpp
_declspec (dllexport) int add(int i, int j)
{
return i+j;
}
命令:cl /LD lib2.cpp
生成:lib2.dll
命令:dumpbin -exports lib2.dll
函數名:?add@@YAHHH@Z
代碼:lib3.cpp
extern "C" _declspec (dllexport) int _stdcall add(int i, int j)
{
return i+j;
}
命令:cl /LD lib3.cpp
生成:lib3.dll
命令:dumpbin -exports lib3.dll
函數名:_add@8
代碼:lib4.cpp
extern "C" _declspec (dllexport) int add(int i, int j)
{
return i+j;
}
命令:cl /LD lib4.cpp
生成:lib4.dll
命令:dumpbin -exports lib4.dll
函數名:add