linux下開發so動態庫

test.cpp

#include "test.h"


void Test::sayHello() {
    printf("hello, this method is in so.\n");
}

test.h

#ifndef JOHN_TEST_H
#define JOHN_TEST_H
#include <stdio.h>

class Test {
    public:
        void sayHello();
};

#endif

test_api.cpp

#include "test.h"
#include "test_api.h"

void api_sayHello() {
    Test test;
    test.sayHello();
}

test_api.h

#pragma once

#ifdef __cplusplus
extern "C" {
#endif

void api_sayHello();

#ifdef __cplusplus
}
#endif

build.sh

gcc -fpic -shared test.cpp test_api.cpp -o libtestapi.so

golang中調用so

main.go

package main

//#cgo LDFLAGS: -L. -ltestapi -lstdc++
//#cgo CFLAGS: -I../so-gcc
//#include "test_api.h"
import "C"

func test_api_sayHello() {
	C.api_sayHello()
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章