DLL的namespace问题

jianzhanger 2013-07-15 05:47:21
定义了两个dll,但是函数重名了,于是想到了使用namespace

.h文件
namespace xx
{
AFX_API_EXPORT CString WINAPI Fun();
}

.cpp文件
CString WINAPI xx::Fun()
{
}

由于使用了显式调用,def文件中的
Fun @1
该如何修改

不修改发现编译报错:
error LNK2001: 无法解析的外部符号
...全文
276 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianzhanger 2013-07-22
  • 打赏
  • 举报
回复
可以用namespace吗,如果导出重命名的话,显式调用的名称也要变了吧。这就改变了接口了
jianzhanger 2013-07-22
  • 打赏
  • 举报
回复
引用 11 楼 Saleayas 的回复:
导出的时候重命名。
哦。我来试试。
jianzhanger 2013-07-18
  • 打赏
  • 举报
回复
引用 9 楼 davidyu720 的回复:
编译两个DLL,函数名有细微差别,然后用二进制比较区别,找到函数名的变化规律。 用二进制编辑工具打开A.DLL,按照规律修改A.DLL的重名函数。
你这个牛
Saleayas 2013-07-18
  • 打赏
  • 举报
回复
导出的时候重命名。
davidyu720 2013-07-16
  • 打赏
  • 举报
回复
编译两个DLL,函数名有细微差别,然后用二进制比较区别,找到函数名的变化规律。 用二进制编辑工具打开A.DLL,按照规律修改A.DLL的重名函数。
jianzhanger 2013-07-16
  • 打赏
  • 举报
回复
情况是这样的。 dll A是其他人写的。只能用隐式调用 dll B是需要开发的,规定了接口函数,是显式调用的, B需要调用A才能运行 B与A有函数同名
jianzhanger 2013-07-16
  • 打赏
  • 举报
回复
引用 5 楼 arpnet99 的回复:
http://blog.csdn.net/tuwen/article/details/1865307
如果是exe调用dll,我想可以实现上述文章的namespace 但是,如果是dll隐式调用dll,def文件中exports会报函数不唯一。
jianzhanger 2013-07-16
  • 打赏
  • 举报
回复
引用 4 楼 davidyu720 的回复:
用LoadLibrary 装载DLL,用 GetProcAddress 获取DLL的导出函数。
这个dll引用了另一个dll,没有显式导出,只能用隐式的调用
davidyu720 2013-07-16
  • 打赏
  • 举报
回复
用LoadLibrary 装载DLL,用 GetProcAddress 获取DLL的导出函数。
jianzhanger 2013-07-16
  • 打赏
  • 举报
回复
AFX_API_EXPORT 是vc定义的宏,就是导出标识
目前无法编译成功,因为两个dll中,有同名函数,但是我已经用了命名空间,为什么不能区分
gg606 2013-07-15
  • 打赏
  • 举报
回复
关注一下。 不如先不用模块定义文件,AFX_API_EXPORT就是导出标识吧? 生成DLL后用Depends看看
jianzhanger 2013-07-15
  • 打赏
  • 举报
回复
本来用显式调用可以避免重名的。 这里,其中一个dll调用了另一个dll,用的是隐式调用

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧