2011-07-03 75 views
0

構建用於Node.js的的Cygwin/Windows下一個本機模塊:C++爲什麼鏈接器無法看到我的文件?

我有這樣的monkey.cc文件:

#include <monkey/monkey.h> 

運行

node-waf configure build 

我得到以下

'configure' finished successfully (0.351s) 
Waf: Entering directory `/usr/src/build' 
[2/2] cxx_link: build/default/monkey_1.o -> build/default/monkey.node build/default/libmonkey.dll.a 
Creating library file: default/libmonkey.dll.a 

然後如下錯誤:

default/monkey_1.o:/usr/src/build/../monkey.cc:144: undefined reference to `_monkeyFoo' 

monkeyFoomonkey.h其是在名爲monkey目錄中定義。我從包含monkey目錄和monkey.cc文件的目錄運行上述命令。

編輯:

WScript的,這是Python腳本,節點WAF運行是這樣的:

import os 

srcdir = '.' 
blddir = './build' 
VERSION = '0.0.2' 

def set_options(opt): 
    opt.tool_options('compiler_cxx') 

def configure(conf): 
    conf.check_tool('compiler_cxx') 
    conf.check_tool('node_addon') 

def build(bld): 
    monkey = bld.new_task_gen('cxx', 'shlib', 'node_addon') 
    monkey.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall", "-L/usr/lib", "-lssl"] 
    monkey.chmod = 0755 
    monkey.target = 'monkey' 
    monkey.source = 'monkey.cc' 

我在想什麼???

+0

我們可以看看一些代碼嗎? – foxy

+0

我已經添加了構建腳本。代碼沒有問題,因爲這是我正在編譯的現有代碼。我只需要把事情放在正確的地方! – Tom

回答

0

在wscript中添加monkey.lib='crypto'

3

這是一個鏈接器錯誤,而不是編譯器錯誤。你有這個功能的定義嗎? (不只是一個聲明。)你確定它被鏈接?

+0

謝謝,這很有幫助。我確實有定義,但他們必須在錯誤的地方。這應該如何設置? – Tom

+0

我想我誤解了導入聲明的含義。當我把頭文件和定義文件放入與monkey.cc相同的目錄中,並且將導入改爲「monkey.h」時,它就會說沒有這樣的文件或目錄。所以我肯定會吼出錯誤的樹... – Tom

+0

如果函數定義不在monkey.cc中,那麼您需要將它列爲已編譯的源文件之一。 (我不熟悉你正在使用的構建系統。) – Shirik

相關問題