从C 如何执行C中的方法或访问结构

From C++ how to execute a method or access struct which is in C?

本文关键字:方法 访问 结构 执行 何执行      更新时间:2023-10-16

我需要将字符串值从C 传递到C库。您如何致电CppCallToC或来自.cpp我如何访问struct rtmp_stream *stream;

c 文件:ui/window-basic-main.cpp:

void OBSBasic::Load(const char *file) {
  //From C++ how to go to the C method?
  CppCallToC();
}

c文件:插件/obsutputs/rtmp-stream.c:

static void CppCallToC() {
  //https://github.com/jp9000/obs-studio/blob/master/libobs/util/dstr.h
  //struct dstr      path, key;
  struct rtmp_stream *stream;
  //dstr_printf(&stream->path,  obs_path);
  //dstr_printf(&stream->key,   obs_key);
}

您的问题不是C vs c 问题。rtmp-stream.c中的所有功能均声明为静态,这意味着它们具有内部链接,并且无法从其他编译单元中调用。您只能通过在文件末尾定义并在opt-un-unputs.c声明的RTMP_OUTPUT_INFO结构间接访问这些函数,甚至该声明仅在该文件中可用。

我对obs Studio一无所知,所以恐怕我无法帮助您。您必须跟踪obs_register_output(&rtmp_output_info)中发生的事情。