在 SwiftUI 项目中链接和编译 C++ 库 (Pcapplusplus)

Issue linking and compiling C++ lib (Pcapplusplus) in SwiftUI project

我正在尝试通过使用 objective C 桥 类 在我的 SwiftUI 应用程序中使用 C++ 库 Pcapplusplus。我已经编译了一个独立的 C++ 可执行文件,它非常基本地使用了 pcpp 库,但我不知道如何 link 并在 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 的步骤:

  1. 运行 arm64 的 PcapPlusPlus 配置脚本:
    ./configure-mac_os_x.sh --arm64
    
  2. 构建 PcapPlusPlus:
    make libs
    
  3. 转到构建设置,并在“header 搜索路径”下添加 PcapPlusPlus 包含目录
  4. 在“其他链接器标志”下添加:
    -L/usr/local/lib -lpcap, -lpthread $(inherited)
    
  5. 在项目设置的构建阶段选项卡下,在“Link Binary With libraries”中添加 SystemConfig 框架,corefoundation,然后 libCommon++.alibPacket++.alibPcap++.a

@publicstaticmain 如果有任何遗漏或不准确的地方,请告诉我。