相关疑难解决方法(0)

如何从Ocaml中调用C++代码自己使用共享库.so?

我需要构建一个调用共享对象的Ocaml/C++模块(linux下的.so)

只要编译一个简单的Ocaml/C++存根是一个问题,我管理的东西,但是当我需要将.so与ocamlmklib或ocamlopt链接时,它会失败

我在gcc 4.5(c ++ 0x)下工作

共享对象的文件:

hello.hpp

#include <iostream>
#include <string>

using namespace std;

class HelloApplication
{
public :

    HelloApplication();
    ~HelloApplication();

    void say(string s);

};

typedef HelloApplication *(*create_hello)();
Run Code Online (Sandbox Code Playgroud)

hello.cpp:

#include "hello.hpp"

HelloApplication::HelloApplication(){}
HelloApplication::~HelloApplication(){}

void HelloApplication::say(string s)
{
     cout << "Hello : " << s << endl;
}

extern "C"
{
    HelloApplication *create()
    {
        return new HelloApplication();
    }

}
Run Code Online (Sandbox Code Playgroud)

编译事物的CMake.txt文件:

cmake_minimum_required(VERSION 2.6)

project(testHello_proj)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Release" FORCE)
#set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Debug" FORCE)

set(LIBRARY_OUTPUT_PATH lib/${CMAKE_BUILD_TYPE})

## Compiler flags …
Run Code Online (Sandbox Code Playgroud)

c++ linux interop ocaml shared-libraries

5
推荐指数
1
解决办法
1200
查看次数

标签 统计

c++ ×1

interop ×1

linux ×1

ocaml ×1

shared-libraries ×1