麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

undefined reference to `SetPduPowerConsumptionCnt'錯誤的解決方法

2020-01-26 15:57:29
字體:
來源:轉載
供稿:網友

問題:
程序模型用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編輯器時,沒有設定區分大小寫,導致沒有很容易一眼看出來。

修改之后,成功編譯。
問題解決。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: av免费在线观看国产 | 国av在线 | 一区二区精品视频在线观看 | 欧美黄在线 | 国产亚洲精品综合一区91 | 色综合久久久久久久久久 | 久久久久中精品中文字幕19 | 日本欧美在线播放 | 超碰97最新| 精品国产一区二区三区天美传媒 | 日韩av电影免费看 | 黄色三级三级三级 | 国产精品亚洲激情 | 成人免费福利网站 | 日韩一级片黄色 | 依依成人精品视频 | 成人国产精品久久久 | 在线看一区二区三区 | 极品国产91在线网站 | 日本a∨精品中文字幕在线 被啪羞羞视频在线观看 | 色妞妞视频 | 精品小视频 | 在线观看一区二区三区四区 | 国产日韩在线观看一区 | 青草久久av | 永久免费不卡在线观看黄网站 | 狠狠干导航 | 国产精品久久久久久久久久iiiii | 午夜免费网 | 欧美极品欧美精品欧美视频 | 亚洲二区免费 | 中国久久久 | 日韩一级片一区二区三区 | 国产精品一区免费在线观看 | 欧美特级黄色 | 免费91在线 | 黄色免费在线电影 | 九九视屏| av在线大全| 中文字幕国 | 久久经典视频 |