我正在尝试在 Modelica 中使用 C++ 库。Modelica 编译器从 Modelica 源代码生成 c,然后调用 ac 编译器来创建可执行文件。Modelica 提供了一种调用 c 函数的机制。我创建了一个包装器:
//myWrapper.cpp
#include "headers_of_cpp_library.h"
extern "C" double call_a_cpp_fn(double a, double b){
return cpp_fn(a,b);
}
外部 C 代码要么动态链接到 Modelica 可执行文件,要么如果代码是纯 c,则可以使用生成的 c 直接编译。我在这里唯一的选择是走动态链接路线。这是用于构建 C++ 库的 Makefile
all: myWrapper.cpp
clang++ -fPIC -shared -LaCppLib -o libmywrappedcpp.so myWrapper.cpp
当我运行 Modelica 编译器时,我得到一些链接错误,这是由于存在需要动态链接的 c++ 库。
undefined reference to symbol '__cxa_free_exception@@CXXABI_1.3'
有没有办法构建 libmywrappedcpp.so 以便 Modelica 系统调用的 c 编译器不必尝试链接 c++?