您的位置:首页 > 编程语言 > C语言/C++

VS2005建立和调试基于C++的DLL项目

2011-08-29 13:44 288 查看
1. [b]VS2005建立和调试基于C++的DLL项目[/b]

File->New->project->Win32.选择Win32 Console Application, 如图示

然后点击“确定”,再到后面的向导中进行设置

“应用程序类型”选择“DLL”,点击Fnish,那么VS2005就自动创建了一个基于C++的DLL模板了。

生成项目,然后在对应的目录下面看到相应的DLL文件了,但是此时里面还没有任何功能,用户需要根据实际需求为DLL编写导出函数,然后供其它应用执行程序调用。

例子:补充下面代码,提供一个导出函数

__declspec(dllexport) int Add(int i, int j);
intAdd(int i, intj)
{
return i+j;
}
编译,确保在debug 目录下生成了dll.dll, 及dll.lib 文件

在dll 工作空间中新建一个工程叫TestDll.添加如下代码

intAdd(int i, intj); // 外部dll函数的调用声明
int_tmain(int argc, _TCHAR* argv[])
{
int sum=Add(3,5);
printf("sum is %d",sum);
return 0;
}
编译会出现:1>testdll.obj: error LNK2019: unresolved external symbol "int __cdeclAdd(int,int)" (?Add@@YAHHH@Z) referenced in function _wmain

这很正常,因为链接器不知道Add(int I, int j) 到哪里去找, 解决办法,添加dll.lib 到链接库,方法如下:Properties->Configuration Properties->linker->input->additionalDependences. 添加dll.lib, 如图示:

再编译,出现如下错误。

1>LINK : fatal error LNK1104: cannotopen file 'dll.lib'
找不到dll.lib, 因为你还没有指定查找路径。好,现在添加库查找路径。

方法如下:Properties->Configuration Properties->linker->general->additionallibray directory. 添加..\debug, (因为dll.dll 就在..\debug 目录下)如图示:

编译,通过。单步运行。可以跟踪到dll 的 int add(int I, int j) 函数中去。

补充: DLL 函数的调用还可以采用动态加载DLL 的方式,具体为LoadLibrary, GetProcAddress., 这里不再举例。

OK! 结束!

靠,发现不能实现图文混排,效果失色不少。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: