假如你需要在mainfrm.cpp调用dll中的void display()函数
在mainfrm.h中加上extern "C" __declspec(dllimport) void display();
找到你的dll中定义(.h)和实现(.cpp)的地方,在前面加上extern "C" __declspec(dllimport)
即extern "C" __declspec(dllimport)void display()
把你先前生成的“项目名.dll”和“项目名.lib”文件考到你第二个项目的debug目录或release目录下。
ok了
在mainfrm.h中加上extern "C" __declspec(dllimport) void display();
找到你的dll中定义(.h)和实现(.cpp)的地方,在前面加上extern "C" __declspec(dllimport)
即extern "C" __declspec(dllimport)void display()
把你先前生成的“项目名.dll”和“项目名.lib”文件考到你第二个项目的debug目录或release目录下。
ok了
是什么意思??
在mainfrm.h中加上extern "C" __declspec(dllimport) void display();
找到你的dll中定义(.h)和实现(.cpp)的地方,在前面加上extern "C" __declspec(dllexport)
即extern "C" __declspec(dllexport) void display()
把你先前生成的“项目名.dll”和“项目名.lib”文件考到你第二个项目的debug目录或release目录下
dllimport是导出函数,dllexport是导入函数,你可以这样理解,具体到MSDN里查
我照你的做了,编译时出错:
usedllDlg.obj : error LNK2001: unresolved external symbol __imp__display
Debug/usedll.exe : fatal error LNK1120: 1 unresolved
为什么?
有知道的请帮帮忙!!!!!!!!
HINSTANCE hInst = LoadLibrary("KERNEL32.DLL");
if(hInst)
{
typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);
MYFUNC RegisterServiceProcessFun = NULL;
RegisterServiceProcessFun = (MYFUNC)GetProcAddress(hInst, "RegisterServiceProcess");
if(RegisterServiceProcessFun)
{
RegisterServiceProcessFun(GetCurrentProcessId(),1);
}
FreeLibrary(hInst);
}
这样作应该是可以的.
RegisterServiceProcess指的是你DLL库中的函数名称.你可以把它换成你自己的函数.