*****************新手简单问题右键转函数定义报错**************************

jimu8130 2007-03-27 10:29:06
该函数我是这样添加的,先在主cpp文件下写了函数实现,然后在对应的.h(不知道为什么,该.h文件仅仅就有部分函数的声明,没有变量的声明)写下了函数的声明,不过build没错误,但是编译却说这个.h文件没有关联的编译工具。但是我在cpp文件该函数的实现中右键该函数的名称选择转到该函数的定义的时候,报说这个函数符号未定义,请问该如何解决
...全文
158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fromocean 2007-03-28
  • 打赏
  • 举报
回复
其实这些很常见的,.h文件是不参与编译的,你可以直接在工作区对头文件和cpp文件右键,就看到所有的.h文件的编译按钮是灰的,所以提示那个没有编译的工具是对的
其次没有输入点,是不是你的def文件中没有及时更新?
jimu8130 2007-03-27
  • 打赏
  • 举报
回复
to freeman868
补充说明几点
1 上面的cpp和.h都是为编写一个dll作的,原来我未添加另外2个函数实现的时候dll是正常可以被使用的。
2 cpp的内容都是函数,大部分是以类似short __declspec(dllexport) __stdcall修饰声明的,最后出现在classview里面的gloab文件夹下面
3 .h的内容是对应cpp中提供给外部使用的函数的声明。
4 我当时添加自己函数的时候,是首先在cpp中写的实现,然后在.h中写了声明,声明和实现都是参照原先正确的来作的。

可是给delphi写的程序调用的时候说我后面加的两个函数无法定位输入点,不知道有人知道原因么
freeman868 2007-03-27
  • 打赏
  • 举报
回复
有可能是你的函数声明写错了,如果该函数是类的成员函数,要确保声明的时候把类的作用域给去掉;如果该函数不是本类的成员函数就不必在.H文件中声明了!

譬如:你的当前类为Cabc,它的文件是abc.h和abc.cpp,你要添加的函数是Add();
1. Add()是Cabc的成员函数:
在abc.h中的声明 -> void Add();
在abc.cpp中的实现 -> void Cabc::Add(){}
2.Add()不是Cabc的成员函数:
在abc.cpp中的实现 -> void Add(){}

freeman868 2007-03-27
  • 打赏
  • 举报
回复
有可能是你的函数声明写错了,如果该函数是类的成员函数,要确保声明的时候把类的作用域给去掉;如果该函数不是本类的成员函数就不必在.H文件中声明了!

譬如:你的当前类为Cabc,它的文件是abc.h和abc.cpp,你要添加的函数是Add();
1. Add()是Cabc的成员函数:
在abc.h中的声明 -> void Add();
在abc.cpp中的实现 -> void Cabc::Add(){}
2.Add()是Cabc的成员函数:
在abc.cpp中的实现 -> void Add(){}
jimu8130 2007-03-27
  • 打赏
  • 举报
回复
to ouyh12345:
怎么解决这个问题了?
ouyh12345 2007-03-27
  • 打赏
  • 举报
回复
不能编译.h文件。
freeman868 2007-03-27
  • 打赏
  • 举报
回复
那么,你在这两个函数实现的开始有没有加上“ AFX_MANAGE_STAT (AfxGetStaticModuleState());”这句话呢?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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