摘要: 简单例子如下:#include "Ice/Ice.h"#include "IceUtil/IceUtil.h"#include "Printer.h"using namespace std;using namespace Hello;class MyClass;typedef IceUtil::Handle MyClassPtr;class MyClass : public IceUtil::Shared{public: MyClass( int i) : _i(i){ { ... 阅读全文
posted @ 2013-10-18 00:30 good90 阅读(1058) 评论(0) 推荐(0) 编辑
摘要: 在linux下使用动态库时,经常会发现明明编译时指定的是libA.so,可是程序运行时或通过ldd查看依赖却是libA.so.XXX,原因跟linux下so库的soname有关,查看so库的soname可以通过命令:readelf -d libXXX.so看到;具体使用见下面的例子。编译命令:g++ -fPIC -shared -Wl,-soname,libhello.so.1 -o libhello.so.1.1 hello.cppreadelf -d libhello.so.1.1g++ test.cpp -L. libhello.so.1.1 -o test 阅读全文
posted @ 2013-10-18 00:17 good90 阅读(2154) 评论(0) 推荐(0) 编辑
摘要: 记录下:Linux下导出so库接口时在下面情况下无法导出(编译时增加了__attribute__(("hidden"))属性)。void *__attribute__(("default")) test()这样该编译出的so库中test函数还是Local属性的,必须这样声明__attribute__(("default"))void * test()才可以导出GLOBAL属性的。参考:http://seekingfun.org/blog/2010/08/09/gcc-visibility/ 阅读全文
posted @ 2013-10-18 00:07 good90 阅读(620) 评论(0) 推荐(0) 编辑