我已经用 Homebrew 安装了 ffmpeg(版本 4),我正在尝试在 C++ 项目中使用各种 ffmpeg 库,但是在链接过程中出现多个错误。
Undefined symbols for architecture x86_64:
"_av_free", referenced from:
_main in main.cpp.o
"_av_packet_alloc", referenced from:
_main in main.cpp.o
"_av_parser_init", referenced from:
And so on ...
Run Code Online (Sandbox Code Playgroud)
我已将库包括如下
extern "C" {
#include <libavutil/frame.h>
#include <libavutil/mem.h>
#include <libavcodec/avcodec.h>
}
Run Code Online (Sandbox Code Playgroud)
但是,这仍然不起作用。我想我可能错过了我的CMakeLists.txt
文件中的某些内容,目前看起来像这样:
cmake_minimum_required(VERSION 2.6)
project(decode_encode)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "-D__STDC_CONSTANT_MACROS")
add_executable(decode_encode main.cpp)
Run Code Online (Sandbox Code Playgroud)
我很可能需要指定额外的链接标志,但是有没有更好的方法来处理CMakeLists.txt
文件中的链接部分?
我有一个数据框df
,我正在尝试对每个单元格应用一个函数。根据文档我应该使用该transform
功能。
该函数应该应用于每一列,因此我用作[:]
所有列的选择器
transform(
df, [:] .=> ByRow(x -> (if (x > 1) x else zero(Float64) end)) .=> [:]
)
Run Code Online (Sandbox Code Playgroud)
但它产生了一个异常
ArgumentError: Unrecognized column selector: Colon() => (DataFrames.ByRow{Main.workspace293.var"#1#2"}(Main.workspace293.var"#1#2"()) => Colon())
Run Code Online (Sandbox Code Playgroud)
虽然当我使用单列时,它工作得很好
transform(
df, [:K0] .=> ByRow(x -> (if (x > 1) x else zero(Float64) end)) .=> [:K0]
)
Run Code Online (Sandbox Code Playgroud)