在VC.NET下做了一个DLL,大致过程如下:新建项目--WIN32项目--DLL。然后在其中随便写了个小函数,比方说GetContent();生成一个DLL文件,一个LIB文件再生成一个WIN32项目,并在其中调用上面的DLL,如果是动态加载(LoadLibrary())则一切正常。但如果是在装入时加载(已将LIB文件加入到项目中)则链接时报错,大意是找不到名为__imp__GetContent的符号。请教高人这是怎么回事!
调试欢乐多
exe中:
extern "C" __declspec(dllexport)
LRESULT CALLBACK KeyboardProc(
int nCode,
WPARAM wParam, LPARAM lParam )
{
char m_SysDir[128];
GetSystemDirectory(m_SysDir,128);
......
}
dll 中:
extern "C" __declspec(dllimport)
LRESULT CALLBACK KeyboardProc
(int nCode, WPARAM wParam, LPARAM lParam);
一个是函数参数传入顺序的约定是,和CALLBACK有关
一个是输出函数名的格式,和extern "C"有关你可以把你的代码贴出来
帮你改
extern "C" __declspec(dllexport)
LRESULT CALLBACK KeyboardProc
(int nCode, WPARAM wParam, LPARAM lParam);
EXE
extern "C" __declspec(dllimport)
LRESULT CALLBACK KeyboardProc
(int nCode, WPARAM wParam, LPARAM lParam);
还要在Project ->settings->Link ->Object/Library Modules中填入与DLL一起生成的LIB名称或者
在文件头写入以下代码#pragma comment(lib,"DLL一起生成的LIB名称")
DLL一起生成的LIB放在工程目录下
一个是输出函数名的格式,和extern "C"有关@@@@@@@@@