首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于名字空间和动态链接库的有关问题

2012-04-12 
关于名字空间和动态链接库的问题为预防系统中名字冲突,在动态链接库中进行名字空间约束,如下:namespace {_

关于名字空间和动态链接库的问题
为预防系统中名字冲突,在动态链接库中进行名字空间约束,如下:

  namespace {

  __declspec( dllexport ) void print( ) {

  std::cout << "hello world!" << std::endl;

  }

  }

用显示方式( GetProcAddress )调用此动态链接库时,函数名称应该如何填写??

  namespace {

  extern"C" __declspec( dllexport ) void print( ) {

  std::cout << "hello world!" << std::endl;

  }

  }

按照C风格导出的函数,在显示方式( GetProcAddress )调用时会不会对名字空间有影响呢??


[解决办法]
C里没有namespace,namespace是C++的东西,如果你要用namespace, 就不能用extern "C", 需要在GetProcAddress时输入函数全名,比如?Divide@MyMathFuncs@MathFuncs@@SANNN@Z
[解决办法]
命名空间只会对文件模块有意义,对PE没意义

为了避免DLL导出函数名称更改,使用exterc "c"和.def文件来防止名称更改。最后可以通过dumpbin/depends来查看。

热点排行