写这篇文章是因为这个问题在网上搜索都不太符合我的情况,如果能帮助到别人,那就很好了。
说明一下具体情况:
因工作需要,要将libmseed源码编译成dll文件给其他人调用。
libmseed的源码已经很清晰了,用vs自带的nmake工具会很轻松的将libmseed.lib 生成,但是生成dll时会报错,所以选择用VS2012生成dll文件。
首先选择 ‘新建项目’->‘win32’项目,应用程序类型选择 ‘DLL’, 附加选项选择 ‘空项目’,'完成'。
在打开的‘解决方案自愿管理器’中,在项目上右键 ‘添加现有项’ ,将源码都添加到项目中。
右键 ‘属性’->‘连接器’->‘输入’ , 在模块定义文件中 将源码里面的libmseed.def 文件的路径输入进去。 如:F:\libmseed\libmseed-master\libmseed.def
介绍一下def文件: 这里面存了一些函数名 ,在生成dll文件的时候会将这些函数保存在里面,具体的请百度。
然后就可以编译了,生成的dll文件就可以调用了。
十分感谢def文件用法介绍的作者,下面是连接:
http://blog.csdn.net/huang_xw/article/details/7524448
下面说一下dll文件调用时需要做的一些做法:
如何在编译器(vs2013)里设置调用别人写好的lib和dll步骤: 1.Tools->options->projects and solutions->VC++ directories分别在包含文件,库文件填加了路径 (这些路径只告诉编译器怎么找文件,没有说把那里面的文件加入工程.) (若不设置,编译报错:无法打开***文件) 2.Project->properties->c/c++->general->additional include directories 添加包含文 件 Project->properties->linker->general->additional library directories 添加库文 件 Project->properties->linker->input->additional additional dependencies添加用到的lib (这一步也可以在代码中显示调用 #pragma comment(lib, "***.lib") ) (若不添加,连接报错:无法解析的外部符号) 3.将dll文件拷贝到工程debug文件下(如果不拷贝,编译链接不报错,运行报错:无法找到***.dll)切记第三条, 上面这些文字来源于百度文库,由于我的原因找不到原链接,请大家见谅。
以上这些内容希望帮助到需要的人,如有错误请指出,谢谢。