I. 创建静态图书馆:
// foo.h
extern "C" {
int foo (const char* arg0, int arg1);
}
// foo.cpp
#include "foo.h"
// implementation of foo
该代码编为foo.o
,并包装为libfoo.a
,安装到MinGW s代码lib
dir(在Windows,使用海合会工具链)。
我想做的是,在哈萨克瑟法典中总结这一职能,因此,一个典型的金融基金具有如下约束力:
-- Foo.hs
{-# LANGUAGE ForeignFunctionInterface #-}
module Foo where
foreign import ccall "foo"
c_foo :: CString -> CInt -> IO (CInt)
www.un.org/Depts/DGACM/index_spanish.htm 添加到<代码>。
...
extra-libraries: foo, stdc++
但是,GHC公司对未明确提及foo
的同义词:
.dist-scionuildpath oFoo.o:fake:(.text+0x514): undefined reference to `foo
[EDIT]
I also tried build the haskell package using cabal:
cabal configure
cabal build
结果表明:
Loading object (dynamic) foo ... ghc.exe: foo: ....
<command line>: user specified .o/.so/.DLL could not be loaded (addDLL: could not load DLL)
因此,这是否应当与静态/动力联系有关? 因此,我注意到GHC希望装载<代码>o/.so/.DL但NOT.a
。 我真的混淆不清。
http://www.haskell.org/haskellwiki/Cxx_foreign_Function_interface” rel=“nofollow”职称=“Cxx Foreign Function Interface”
[EDIT]
One solution is to use -optl-lfoo -optl-lstdc++
in .cabal
file, not extra-libraries
. And the naming problem can be easily solved by wrapping the declaration in extern "C"
:
#ifdef __cplusplus
extern "C" {
#endif
extern int foo (const char*, int);
#ifdef __cplusplus
}
#endif
在EclipseFP内进行这项工作,因此使用假肢。 但是,它仍然未能在<条码>建造条码>。