当前位置:  编程技术>c/c++/嵌入式

undefined reference to `SetPduPowerConsumptionCnt'错误的解决方法

    来源: 互联网  发布时间:2014-10-18

    本文导语:  问题:程序模型用C++语言编写,在程序模型和调用函数之间添加了一个接口文件modelc.cpp,用来让用c语言程序调用程序模型中的函数; 新添加了两个函数setPduPowerConsumptionCnt()和setPduPowerConsumptionTot(),用来清除PDU模型中的总功耗...

问题:
程序模型用C++语言编写,在程序模型和调用函数之间添加了一个接口文件modelc.cpp,用来让用c语言程序调用程序模型中的函数;

新添加了两个函数setPduPowerConsumptionCnt()和setPduPowerConsumptionTot(),用来清除PDU模型中的总功耗和功耗计数器;

编译时出现错误提示:

代码如下:

dingq@wd-u1110:~/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket$ make clean;make
rm -f *.o pdu
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c main.cpp -o main.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c model.cpp -o model.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c modelc.cpp -o modelc.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c IniFile.cpp -o IniFile.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c ClientSocket.cpp -o ClientSocket.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c Thread.cpp -o Thread.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c SensorReader.cpp -o SensorReader.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c LcdWriter.cpp -o LcdWriter.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c Monitor.cpp -o Monitor.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c Helper.cpp -o Helper.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c Mutex.cpp -o Mutex.o
arm-linux-g++ -g3 -Wall -o0 -I../../../tools/eldk42/arm/usr/include/ -I../../../tools/eldk42/arm/usr/include/C++/4.2.2/ -c serial.cpp -o serial.o
arm-linux-gcc -g3 -Wall -o0 -c frm_package.c -o frm_package.o
arm-linux-gcc -g3 -Wall -o0 -c nettrans.c -o nettrans.o
arm-linux-gcc -g3 -Wall -o0 -c sensor-att7053.c -o sensor-att7053.o
arm-linux-g++ -L../../../tools/lib/ -lpthread -o pdu main.o model.o modelc.o IniFile.o ClientSocket.o Thread.o SensorReader.o LcdWriter.o Monitor.o Helper.o Mutex.o serial.o frm_package.o nettrans.o sensor-att7053.o
sensor-att7053.o: In function `reset_EnergyPort':
/home/dingq/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/sensor-att7053.c:83: undefined reference to `SetPduPowerConsumptionCnt'
/home/dingq/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/sensor-att7053.c:92: undefined reference to `SetPduPowerConsumptionTot'
collect2: ld returned 1 exit status
make: *** [pdu] Error 1

解决办法:
1. 忘了在modelc.cpp的函数实现中添加extern "C"了。
代码如下:

extern "C" int setPduPowerConsumptionCnt(int index, unsigned int val) {
 if (index > 8 || index < 1) {
  printf("Error: The index available is between 1 and 8.n");
  return -1;
 }
 model->Channels()[index-1].TheEnergyPort().SetPowerConsumptionCount(val);

 return 0;
}


添加之后,再次编译,错误仍然存在。
查找了半天,原来头文件modelc.h中和实现文件modelc.cpp中的函数名差了一个符号,头文件中是小写的s,setPduPowerConsumptionCnt,而实现文件中用了大写的S,SetPduPowerConsumptionCnt;而使用vim编辑器时,没有设定区分大小写,导致没有很容易一眼看出来。

修改之后,成功编译。
问题解决。


    
 
 

您可能感兴趣的文章:

  • linux 下使用socket, link时候一堆undefined reference
  • 求助:undefined reference to `pcre_compile'
  • undefined reference: 编译时不知道要调用哪个类库
  • g++ 编译出现:undefined reference to 'main'错误,请教如何解决?
  • undefined reference to `sqlite3_open'(在线等 ~)
  • 出现undefined reference to `QScreenShade::run()'
  • undefined reference to 'consine' 错误
  • 总是提示undefined reference to 'CRECV::CRECV(char *)'
  • undefined reference to'CPU_ZERO'问题
  • 调用共享库有怎么有这样的问题 .so:undefined reference to ‘sqrt’……
  • 问题关于undefined reference to
  • 有谁能帮我看看这个关于线程编译的问题,他总是报告说undefined reference
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • 求助!!undefined reference to 'pthread_create'
  • *****SOS***undefined reference to `__ctype_b' 问题********
  • 编译时链接我的动态库出现错误:undefined reference to ‘XXXXXX’
  • posix定时器问题“undefined reference to `timer_create'”
  • 编译Linux时遇到undefined reference to
  • XOpenDisplay为什么编译时出现:”undefined reference to XOpenDisplay"?
  • GSL undefined reference to `gsl_sf_lnchoose' Ubuntu
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.awt类buffercapabilities.flipcontents的类成员方法: undefined定义及介绍
  • 编译时提示undefined refirence to "test.c"请求帮助?谢谢!!
  • java命名空间javax.xml.bind.annotation枚举xmlaccessorder的类成员方法: undefined定义及介绍
  • 请教:Linux下编译c代码,运行程序时出现undefined symbol exp
  • java命名空间javax.swing类jcomponent的类成员方法: undefined_condition定义及介绍
  • 重新发帖-undefined symbol错误
  • java命名空间java.awt.image类databuffer的类成员方法: type_undefined定义及介绍
  • solaris undefined symbol
  • java命名空间javax.xml.datatype类datatypeconstants的类成员方法: field_undefined定义及介绍
  • 调试so文件,dlerror返回 undefined symbol: sem_post
  • java命名空间java.awt.event类keyevent的类成员方法: vk_undefined定义及介绍
  • 在LINUX系统下编译用户态的代码时提示undefined refirence to "函数名"错误请求帮助?谢谢!!
  • java命名空间java.lang类character的类成员方法: directionality_undefined定义及介绍
  • Call to undefined function
  • java命名空间java.awt.event类keyevent的类成员方法: char_undefined定义及介绍
  • Call to undefined function: mysql_connect这个错误怎么解决???
  • 怎样排除编译错误:Undefined symbol:XXX
  • PHP代码错误:急!!!急!!急!!!Fatal error: Call to undefined function: dbase_open() 怎么解决???????????? 100在
  • libxml2 编译程序 ERROR: Undefined symbol: .iconv_open
  • 关于g++ 下的undefined operator new [] (unsigned long) 的错误
  • 在LINUX GCC 编译错误 UnDefined reference to "pthread_creat"


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3