有一个现有的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