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

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

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! 结束!

 

靠,发现不能实现图文混排,效果失色不少。


你可能感兴趣的:(#,C,编程,dll,c++,application,function,file)