lib 使用__declspec( dllexport )

本文介绍了在Visual Studio 2010中创建DLL库时遇到的问题,即默认情况下只生成DLL而没有LIB文件。通过添加DEF文件并设置链接器选项可以生成LIB,但这种方式在导出函数时不够便捷。作者参考Ogre源码,发现可以使用__declspec(dllimport/dllexport)宏来控制函数导出。然而,在实践中直接使用Export宏导致编译链接错误,暗示正确使用这些宏的重要性。
摘要由CSDN通过智能技术生成

  使用vs2010创建了一个dll 库,直接编译导出,发现只生成dll,而没有lib文件,然后上网查方法,有人说随便建立一个.def文件,然后在链接器-->输入-->模块定义文件中包含(这一步编译器自动完成),就可以了,可是实现起来发现,虽然导出lib了,可是其他工程还是无法链接里面的函数,因为里面的函数并没有被导出到lib中,而如果要导出,就必须编写.def文件,不方便,于是看Ogre源码的实现方法,里面使用了_OgreExport 宏来控制函数导出,宏定义如下:

<pre name="code" class="cpp">#   	if defined( OGRE_NONCLIENT_BUILD )
#       	define _OgreExport __declspec( dllexport )
#   	else
#           if defined( __MINGW32__ )
#               define _OgreExport
#           else
#       	    define _OgreExport __declspec( dllimport )
#           endif
#   	endif

 

图方便在自己的工程里面直接写了一个

# define Export _OgreExport
因为没去理解这个宏定义的原理,直接使用,出现很多问题。

在其他函数或类中,直接使用Export 导出失败,编译提示函数链接失败,发现Expo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值