Я делаю аддон nodejs. У меня есть 5 файлов в моей визуальной студии проекта:Ошибки компоновщика Уже определены
comm.h/cc, node_main.cc, util.h/cc
связать его с библиотекой node.lib
node_main.cc имеет функцию:
v8::Handle<v8::Value> StartMethod(const v8::Arguments &args) {
v8::HandleScope scope(args.GetIsolate()); // node_isolate
int length = args.Length();
std::vector<std::unique_ptr<char[]>> argv;
for(int i=0;i<length;++i) {
if(args[i]->IsString()) {
v8::String::Utf8Value str(args[i]);
const int strLen = ToCStringLen(str);
if(strLen) {
std::unique_ptr<char []> data(new char[strLen+1]);
strcpy_s(data.get(), strLen+1, ToCString(str));
argv.push_back(std::move(data));
}
}
}
return scope.Close(v8::Int32::New(MainMethod(argv.size(), &(argv[0]._Myptr))));
}
Когда я построить решение я получаю следующее ошибки линкера:
1>node.lib(node.exe) : error LNK2005: "public: bool __thiscall v8::Value::IsString(void)const " ([email protected]@[email protected]@QBE_NXZ) already defined in communicator.obj
1>node.lib(node.exe) : error LNK2005: "public: class v8::Local<class v8::Value> __thiscall v8::Arguments::operator[](int)const " ([email protected]@@[email protected]@[email protected]@@[email protected]@Z) already defined in communicator.obj
1>node.lib(node.exe) : error LNK2005: "public: int __thiscall v8::Arguments::Length(void)const " ([email protected]@[email protected]@QBEHXZ) already defined in communicator.obj
1>node.lib(node.exe) : error LNK2005: "public: class v8::Isolate * __thiscall v8::Arguments::GetIsolate(void)const " ([email protected]@[email protected]@[email protected]@XZ) already defined in communicator.obj
функция IsString(), Arguments::[] and GetIsolate()
является использование d только в hello.cc
и Arguments::Length()
используются в communicator.cc
. Даже тогда все ошибки относятся к communicator.cc
.
Я только называю функции в файлах cc, не давая никакого нового определения.
В чем проблема?
Заранее спасибо.
Вы включаете один файл .cc в другой? – john
@john Нет, я не включаю файл .cc в любом месте своего проекта. –
Perhap вы определяете эти функции в файле заголовка и не говорите, что они встроены? Есть только несколько вещей, которые могут вызвать эту ошибку, но, не имея возможности увидеть весь ваш код и посмотреть, как ваши проекты настроены, очень сложно сказать, в чем проблема. Независимо от того, что это ничего не осложняет, просто некоторые основные ошибки в том, как вы написали код или создали свои проекты. – john