如何在Ubuntu中的C#中使用C ++库函数

时间:2017-12-06 08:18:54

标签: c# c++ import cmake

有一个现有的C ++库实现了很少的操作。我想从新的cs应用程序执行这些操作。在从CS调用调用时,我得到了EntryPointNotFoundException。

我也可以修改C ​​++库。所以,我在C ++库中放置了三个全局函数,并使它们可以导出(可见性(“默认”))。

// test.h
//     CPP functions to be re-used
#define LIB_VISIBLE __attribute__((visibility("default")))
#define LIB_EXTERN extern

class LIB_VISIBLE Info
{
    public:
    LIB_VISIBLE static int fun(){}  // Being called by funct
};
extern "C"
{
    typedef int32_t          pi_int;
    typedef int8_t           pi_bool;
    typedef int8_t *         pi_bool_ref;
    typedef double           pi_double;
    typedef void *           pi_IntPtr;
    typedef const char *     pi_string;
    typedef char *           pi_string_ref;

    LIB_VISIBLE LIB_EXTERN pi_bool funct(pi_string inPar, pi_string_ref outPar);  // <===== function to be reused
};

test.cpp
bool funct(char * inPar, char* outPar)
{
  // perform operations and return bool
}

在创建so文件时,我是否需要在CMakeFileList.txt中提及一些内容?

赞赏任何形式的输入。

例外:

Unhandled Exception:
System.EntryPointNotFoundException: funct
  at (wrapper managed-to-native) Test.LibraryC.NativeMethods:funct ()
  at Test.TestI.Verify () [0x00000] in <filename unknown>:0 

0 个答案:

没有答案