10 2013 档案
摘要:简单例子如下:#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){ { ...
阅读全文
摘要:在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
阅读全文
摘要:记录下: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/
阅读全文
摘要:delete void pointer是否会有内存泄漏?看下面一个简单例子class Test{public: Test(){ printf ("constructor\n"); } ~Test(){ printf("destructor"); }};int main(int argc, char *argv[]){ Test *p = new Test(); void *p1 = p; delete p1; printf("the end\n"); getchar(); return 0;} 结果输出:从输出可以看出来,没有调用类的
阅读全文
浙公网安备 33010602011771号