获取符号错误:'ld: symbol(s) not found'
Getting symbols error: 'ld: symbol(s) not found'
我试图执行这段代码,但我得到标题的符号错误:
configfile.cpp:
#include "configFile.h"
#include <iostream>
#include <sstream>
#include <fstream>
#include <cstdlib>
#include <stdexcept>
#include <map>
configFile* configFile::getInstance(){
pinstance = new configFile();
return pinstance;
}
configFile::configFile(){
filename = "/Users/myfolder/NetBeansProjects/Oier_2/config.cfg";
}
void configFile::setConfigFileName(std::string s){
filename = s;
}
float* getConfiguration(std::string type, int size) {
std::string data[size];
std::string line;
std::ifstream myfile("/Users/myfolder/NetBeansProjects/Oier_2/config.cfg");
while (std::getline(myfile, line)) {
std::istringstream is_line(line);
std::string key;
if (std::getline(is_line, key, '=')) {
if(key.compare(type) == 0){
for(int i=0; i<size;i++){
std::getline(is_line,data[i],',');
}
}
}
}
float *fdata;
for(int i=0;i<size;i++){
fdata[i] = (float)atof(data[i].c_str());
}
return fdata;
}
和 configFile.h:
#include <string>
#ifndef CONFIGFILE_H
#define CONFIGFILE_H
class configFile {
private:
static configFile* pinstance;
static std::string filename;
public:
static configFile* getInstance();
void setConfigFileName(std::string s);
float* getConfiguration(std::string type, int size);
protected:
configFile();
configFile(const configFile& orig);
};
#endif /* CONFIGFILE_H */
符号错误:
main.cpp:未定义符号:"configFile::filename",引用自:configFile:: configFile configFile.o ()configFile:: configFile configFile.o ()configFile::setConfigFileName(std::basic_string, std::allocator>)in configFile.o
"configFile::pinstance",引用自:configFile::getInstance() in configFile.o
configFile::getInstance()o"configFile:: getConfiguration (std:: basic_stringStd::char_traits, Std::allocator>, int)",引用来自:_main in main.o
Ld: symbol(s) not found
Collect2: ld返回1退出状态
#include <cstdlib>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <limits.h>
#include <algorithm>
#include "configFile.h"
using namespace std;
int main(int argc, char** argv) {
configFile* cfg = configFile::getInstance();
string type = "tiempo";
float* tiem = cfg->getConfiguration(type,3);
for(int i=0; i< 3;i++){
printf( " %f ", tiem[i]);
}
}
我运行的是MaxOSX 10.6.8。提前感谢
问题出在这两个方面:
configFile::configFile(){
filename = "/Users/myfolder/NetBeansProjects/Oier_2/config.cfg";
}
void configFile::setConfigFileName(std::string s){
filename = s;
}
您已经将filename
声明为静态数据成员,因此它的名称必须始终是configFile::filename
。如果你想使用一个数据成员,你可以简单地删除static
定义。
静态和非静态数据成员之间的区别在于,静态数据成员只存在一个变量,而非静态数据成员每个类都有一个该变量的实例。因此,在这种情况下,结果是使用静态,configFile
的每个实例将引用相同的文件路径,而删除静态将使每个configFile
拥有自己的filename
,因此拥有自己的文件路径。
- OpenCV Android C++ imwrite not found
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- C++初学者:为什么我的编译器根据我的循环返回"name not found"?
- 使用提升 asio 时出现"resolve: Host not found (authoritative)"异常
- 为什么 VScode 在 .h 文件中显示"'iostream' file not found"?
- 为什么我在" 'X' identifier not found' "上收到错误
- WinDBG适用于从Visual Studio 2015保存的转储,但不适用于任务管理器。显示异常代码"not found"
- "Entry Point Not Found" Azure 中的错误 LightGBM R 包
- TBB_tbb_LIBRARY_DEBUG-NOT FOUND
- 在 Ubuntu 16.04 下运行协程示例会得到"'experimental/coroutine' file not found"
- 在 mongodb c++ 驱动程序中使用声明"not found"
- 如何修复"/bin/sh: bc: command not found"
- CMake,QT Quick & Visual Studio:"qrc:/main.qml:-1 File not found"
- opencv aruco.h not found windows 10 visual studio
- Qt Cmake 错误编译"GuiSupportQt not found"
- 如何在C++的程序中显示Windows的"DLL not found"错误?
- 如何修复张量流中的"Non-OK-status: Not found: Op type not registered 'NoOp' in binary running"
- 如何在Xcode中修复'sh: brew: command not found'?
- OpenCV: reconstruct() not found