2011-07-03 74 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

相关问题