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

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

  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来查看。