我能夠從命名空間引用函數,但不能引用類。這裏是空間文件SeqLib/FermiAssembler.h」能夠引用函數,但不在命名空間中的類
#ifndef SEQLIB_FERMI_H
#define SEQLIB_FERMI_H
#include <string>
#include <cstdlib>
#include <iostream>
namespace SeqLib
{
void print_my_name(){ std::cout << "It's Crt" }
class FermiAssembler {
public:
FermiAssembler();
~FermiAssembler();
void AddReads(const BamRecordVector& brv);
};
}
我能夠調用print_my_name() via SeqLib::print_my_name()
但是,無法通過SeqLib::FermiAssembler f
這裏是我的/src
#include <iostream>
#include <Rcpp.h>
#include "SeqLib/FermiAssembler.h"
using namespace std;
// [[Rcpp::export]]
void whats_my_name(){
SeqLib::FermiAssembler f;
這裏是封裝件的結構
temp
seqLib
SeqLib
src
FermiAssembler.cpp
SeqLib
FermiAssembler.h
headerFiles
SeqLibCommon.h
src
hello_world.cpp
Makevars which contains PKG_CXXFLAGS= -I../SeqLib
這裏是FermiAssembler.cpp定義
#include "SeqLib/FermiAssembler.h"
#define MAG_MIN_NSR_COEF .1
namespace SeqLib {
FermiAssembler::~FermiAssembler() {
ClearReads();
ClearContigs();
}
}
的錯誤信息是:Error in dyn.load(dllfile) :
unable to load shared object 'temp/seqLib/src/SeqLib.so':
temp/seqLib/src/SeqLib.so: undefined symbol: _ZN6SeqLib14FermiAssemblerD1Ev
更新我已經移動了整個子模塊到src文件夾爲例如:
# temp
# |─── src
# |────SeqLib
# |──────SeqLib
# |────── FermiAssembler.h
# |──────src
# |────── FermiAssembler.cpp
感謝深入的答案!我實際上已經在一個單獨的文件中定義了析構函數,請參閱編輯的答案。 – Crt
我不明白你的意見。 – nrussell
我編輯了原始問題以包含析構函數的**定義**。 – Crt