定义了两个dll,但是函数重名了,于是想到了使用namespace.h文件
namespace xx
{
    AFX_API_EXPORT CString WINAPI Fun();
}.cpp文件
CString WINAPI xx::Fun()
{
}由于使用了显式调用,def文件中的
Fun   @1
该如何修改不修改发现编译报错:
error LNK2001: 无法解析的外部符号dll命名空间

解决方案 »

  1.   

    本来用显式调用可以避免重名的。
    这里,其中一个dll调用了另一个dll,用的是隐式调用
      

  2.   

    关注一下。
    不如先不用模块定义文件,AFX_API_EXPORT就是导出标识吧?
    生成DLL后用Depends看看
      

  3.   

    AFX_API_EXPORT 是vc定义的宏,就是导出标识
    目前无法编译成功,因为两个dll中,有同名函数,但是我已经用了命名空间,为什么不能区分
      

  4.   

    用LoadLibrary 装载DLL,用 GetProcAddress 获取DLL的导出函数。
      

  5.   

    http://blog.csdn.net/tuwen/article/details/1865307
      

  6.   

    这个dll引用了另一个dll,没有显式导出,只能用隐式的调用
      

  7.   

    如果是exe调用dll,我想可以实现上述文章的namespace
    但是,如果是dll隐式调用dll,def文件中exports会报函数不唯一。
      

  8.   

    情况是这样的。
    dll A是其他人写的。只能用隐式调用
    dll B是需要开发的,规定了接口函数,是显式调用的,
    B需要调用A才能运行
    B与A有函数同名
      

  9.   

    编译两个DLL,函数名有细微差别,然后用二进制比较区别,找到函数名的变化规律。
    用二进制编辑工具打开A.DLL,按照规律修改A.DLL的重名函数。
      

  10.   

    可以用namespace吗,如果导出重命名的话,显式调用的名称也要变了吧。这就改变了接口了