c++ - 在 SwiftUI 项目中链接和编译 C++ lib (Pcapplusplus) 的问题
问题描述
我正在尝试通过使用目标 C 桥接类在我的 SwiftUI 应用程序中使用 C++ lib Pcapplusplus。我已经编译了一个独立的 C++ 可执行文件,它对 pcpp 库进行了非常基本的使用,但是我不知道如何在 xcode 中链接和编译它。这是我用来在终端中运行独立可执行文件的两个 makefile。抱歉,如果这非常简单,我只是不确定这些 makefile 将如何转换为 xcode 配置选项。感谢回复!
all:
g++ $(PCAPPP_BUILD_FLAGS) $(PCAPPP_INCLUDES) -c -o main.o main.cpp
g++ $(PCAPPP_LIBS_DIR) -o Tutorial-HelloWorld main.o $(PCAPPP_LIBS)
# Clean Target
clean:
rm main.o
rm Tutorial-HelloWorld
# All Target
all:
g++ $(PCAPPP_BUILD_FLAGS) $(PCAPPP_INCLUDES) -c -o main.o main.cpp
g++ $(PCAPPP_LIBS_DIR) -o Tutorial-HelloWorld main.o $(PCAPPP_LIBS)
# Clean Target
clean:
rm main.o
rm Tutorial-HelloWorld
### COMMON ###
# includes
PCAPPP_INCLUDES := -I/opt/homebrew/Cellar/pcapplusplus/21.05/include/pcapplusplus
# libs
PCAPPP_LIBS := /opt/homebrew/opt/pcapplusplus/lib/libPcap++.a /opt/homebrew/opt/pcapplusplus/lib/libPacket++.a /opt/homebrew/opt/pcapplusplus/lib/libCommon++.a
# post build
PCAPPP_POST_BUILD :=
# build flags
PCAPPP_BUILD_FLAGS := -fPIC
ifdef PCAPPP_ENABLE_CPP_FEATURE_DETECTION
PCAPPP_BUILD_FLAGS += -DPCAPPP_CPP_FEATURE_DETECTION -std=c++11
endif
ifndef CXXFLAGS
CXXFLAGS := -O2 -g -Wall
endif
PCAPPP_BUILD_FLAGS += $(CXXFLAGS)
### MAC OS X ###
# includes
PCAPPP_INCLUDES += -I$(MACOS_SDK_HOME)/usr/include/netinet
# libs
PCAPPP_LIBS += -lpcap -lpthread -framework SystemConfiguration -framework CoreFoundation
解决方案
以下是在 SwiftUI 项目中构建 PcapPlusPlus 的步骤:
- 为 arm64 运行 PcapPlusPlus 配置脚本:
./configure-mac_os_x.sh --arm64
- 构建 PcapPlusPlus:
make libs
- 转到构建设置,并在“标题搜索路径”下添加 PcapPlusPlus 包含目录
- 在“其他链接器标志”下添加:
-L/usr/local/lib -lpcap, -lpthread $(inherited)
- 在项目设置的构建阶段选项卡下,在“将二进制文件与库链接”中添加
SystemConfig
框架、、corefoundation
然后和libCommon++.a
libPacket++.a
libPcap++.a
@publicstaticmain 如果有任何遗漏或不准确,请告诉我。
推荐阅读
- bash - 回显到存在特定字符串的行上方的行
- mysql - GROUP BY 子句并在查询中包含非聚合列
- angular - 如何向 ngFor 循环添加停止条件
- python - for-loops 在 python 的 if 语句中不起作用
- javascript - 如果网站不能使用“https://”,我如何在 Javascript 中转发我的页面?
- security - SPA 应该在哪里保存 OAuth 2.0 访问令牌?
- node.js - Hashicorp 保险库:无法使用节点保险库写入秘密
- c - MATLAB C MEX API:直接进入结构?
- javascript - React Native webview的onLoad函数什么时候执行?
- mockito - 你如何模拟 JobBuilderFactory?