我正在尝试在Modelica中使用C ++库。 Modelica编译器从Modelica源生成c,然后调用c编译器来创建可执行文件。 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 ++?