Я пытаюсь скомпилировать собственный модуль NodeJS, используя два файла: 1 .c файл и 1 .cpp файл. Вот как выглядит мой файл wscript:
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):
obj = bld.new_task_gen("cxx")
obj.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall", "-x", "objective-c"]
obj.source = "c-file.c"
obj = bld.new_task_gen("cxx", "shlib", "node_addon")
obj.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall"]
obj.target = "binding"
obj.source = "cpp-file.cc"
Это создает мне файл binding.node
, который я могу затем частично использовать в Node, но как только я вызываю функцию, расположенную в файле C (ту, которая была скомпилирована первой в wscript выше), Node падает с чем-то как:
dyld: lazy symbol binding failed: Symbol not found: __Z9getSomethingv
Referenced from: /Users/nrajlich/test/build/default/binding.node
Expected in: flat namespace
Это наводит меня на мысль, что первый файл не включается в фазу связывания, но я просто не уверен, как мне его добавить. Есть идеи? Заранее спасибо!