我收到一堆错误,说#34;未定义引用...",并且无法理解原因。我已经阅读了其他问题,其中包含错误"未定义的参考...",但答案对我来说是有效的。这是我的代码的一部分:
主:
#include <iostream>
#include <armadillo>
#include <string>
#include <DombsMain.h>
using namespace std;
using namespace arma;
int main(){
cout << "Armadillo version: " << arma_version::as_string() << endl;
dombsmain::initilize("test");
return 0;
}
dombsmain.h:
#ifndef DOMBSMAIN_H_INCLUDED
#define DOMBSMAIN_H_INCLUDED
#include <string>
#include <vector>
#include "Body.h"
#include "Constraint.h"
#include <Solver.h>
namespace dombsmain {
extern void initilize(std::string fileName);
extern std::string inputfileName;
...blabla
}
#endif // DOMBSMAIN_H_INCLUDED
dombsmain.cpp:
#include <DombsMain.h>
#include <BallJoint.h>
#include <dombs.h>
#indlude blabla
using namespace std;
using namespace arma;
namespace dombsmain{
void initilize(string infileName){
inputfileName = infileName;
..blabla
我认为该错误与命名空间dombsmain有关。 DombsMain.h包含在main和dombsmain.cpp中,但它仍然表示命名空间中的变量和函数未定义。我认为在main和dombsmain.cpp中包括DombsMain.h可能存在一些冲突。我尝试删除main.cpp中的#include <DombsMain.h>
,但后来我致电dombsmain::initilize("test");
答案 0 :(得分:0)
你忘了定义std :: string inputfileName。例如,您可以在dobsmain.cpp中执行此操作:
namespace dombsmain{
void initilize(string infileName){
inputfileName = infileName;
}
std::string inputfileName = "";
}