如题,请给出详细解答!谢谢!
解决方案 »
- 如何截获局域网内的所有MAC侦
- CreateSemaphore怎样能够创建出在两个进程间能够使用的信号量?
- 关于MFC里面菜单呈现灰白色不能激活的问题
- VC6.0 + WTL7.1 在 2003 下如何支持中文
- 把CString转换为CTime,"12:10:00"这得形式的
- 程序调试(在线等)
- 迫切想知道实现这个的原理。望大家进来看看,发表发表见解,thanks
- WaitForMultipleObjects:我要同时等待64个以上的对象(例如1000个),有什么好的策略?
- 怎样向一个数组里面写入数据,使这些数据满足下面的条件?
- 各位老大,请问如何设置列表框控件的滚动条一直处于最下端
- 新手上路:向高手请教一个链接问题:两个工程设置相同,为什么出现不一样的链接信息?
- 为什么使用BlockInput函数时,编译时总提示未定义?
{
MessageBox(NULL,"Called foo1 by function name!",NULL,MB_OK);
}void foo2()
{
MessageBox(NULL,"Called foo2 by function ordinal!",NULL,MB_OK);
}3)在VC菜单中File->New新建一个命名为ExplicitDLL.def的Text file,VC会自动将它加入到工程之中。在ExplicitDLL.def之中添加如下代码: LIBRARY ExplicitDLL
EXPORTS
foo1 @1
foo2 @2 在这里,我们使用了模块定义文件(.def)的方式导出了2个函数。4)编译工程,生成ExplicitDLL.dll。5)在来建立调用程序。在VC菜单中File->New新建一个命名为UseExplicit的Win32 Console Application工程,下一步选择a simple application。并将ExplicitDLL.dll这个文件复制到工程目录内的Debug文件夹之中。6)在UseExplicit.cpp之中包含windows.h头文件,并且在main函数之中添加如下代码: typedef void (*foo1PROC)(void);
typedef void (*foo2PROC)(void);
HMODULE hDLL;
foo1PROC ProcFoo1;
foo2PROC ProcFoo2;
hDLL = LoadLibrary("ExplicitDLL");
if (hDLL != NULL)
{
ProcFoo1 = (foo1PROC) GetProcAddress(hDLL, "foo1");
if(!ProcFoo1)
MessageBox(NULL,"Call foo1 error!",NULL,MB_OK);
else
ProcFoo1();
ProcFoo2 = (foo2PROC) GetProcAddress(hDLL, MAKEINTRESOURCE(2));
if(!ProcFoo2)
MessageBox(NULL,"Call foo2 error!",NULL,MB_OK);
else
ProcFoo2();
FreeLibrary(hDLL);
}
else
MessageBox(NULL,"Load ExplicitDLL.dll error!",NULL,MB_OK);7)编译运行UseExplicit.exe,可以看到两个弹出对话框,程序运行成功。
ExplicitDLL.cpp
Linking...
ExplicitDLL.def : error LNK2001: unresolved external symbol foo1
ExplicitDLL.def : error LNK2001: unresolved external symbol foo2
Debug/ExplicitDLL.lib : fatal error LNK1120: 2 unresolved externals
LINK : fatal error LNK1141: failure during build of exports file
Error executing link.exe.ExplicitDLL.dll - 4 error(s), 0 warning(s)