C++ 正在尝试C++;绑定到Haskell:获取未定义的引用错误

C++ 正在尝试C++;绑定到Haskell:获取未定义的引用错误,c++,c,haskell,cabal,ffi,C++,C,Haskell,Cabal,Ffi,我尝试在Haskell中进行C++绑定,并在调用绑定时运行到“未定义的引用”错误。 我做了一个小项目()来说明这个问题。它包括一个小C++类、一个C包装器、一个C测试脚本和一个Haskell绑定和一个测试脚本。C测试脚本有效,Haskell脚本给了我: [1 of 1] Compiling Binding ( dist/build/Binding.hs, dist/build/Binding.o ) src/Binding.chs:6:26: Warning: Def

我尝试在Haskell中进行C++绑定,并在调用绑定时运行到“未定义的引用”错误。

我做了一个小项目()来说明这个问题。它包括一个小C++类、一个C包装器、一个C测试脚本和一个Haskell绑定和一个测试脚本。C测试脚本有效,Haskell脚本给了我:

  [1 of 1] Compiling Binding          ( dist/build/Binding.hs, dist/build/Binding.o )

  src/Binding.chs:6:26: Warning: Defined but not used: `res'
  In-place registering CPlusPlusBinding-0.1.0.0...
  Preprocessing executable 'binding_test' for CPlusPlusBinding-0.1.0.0...
  [1 of 1] Compiling Main             ( src/BindingTest.hs, dist/build/binding_    /binding_test-tmp/Main.o )

 src/BindingTest.hs:3:1: Warning:
     Top-level binding with no type signature: main :: IO ()
     Linking dist/build/binding_test/binding_test ...
     ../CPlusPlusBinding/c-src/libA_C.a(A_C.o): In function      `A_static_function':

     ../CPlusPlusBinding/c-src/A_C.cpp:4:0:
        undefined reference to `A::static_function()'
     ../CPlusPlusBinding/c-src/libA_C.a(A_C.o): In function `A_member_function':

     ../CPlusPlusBinding/c-src/A_C.cpp:7:0:
        undefined reference to `A::member_function()'
     ../CPlusPlusBinding/c-src/libA_C.a(A_C.o): In function `A_new':

     ../CPlusPlusBinding/c-src/A_C.cpp:10:0:
        undefined reference to `operator new(unsigned long)'
     collect2: error: ld returned 1 exit status

运行<代码> Cabar配置,和 BubBug构建< /Calp>将编译C++和C绑定并复制错误。

更新


我已经解决了下面评论中概述的问题。不过,我似乎无法回答我自己的问题。

社区维基答案供将来参考。解决方案是改变库呈现给链接器的顺序,通过像这样修改cabal文件

include-dirs: ./c-src
ghc-options: -Wall -threaded -lHSCPlusPlusBinding-0.1.0.0 -lA_C -lA -lstdc++

解决方法:我必须更改库呈现给链接器的顺序。这是更改()。您应该能够回答自己的问题。您能否详细说明订单的重要性?我最近有一个类似的问题,没有解决它。