使用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