在 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 的步骤:
- 运行 arm64 的 PcapPlusPlus 配置脚本:
./configure-mac_os_x.sh --arm64
- 构建 PcapPlusPlus:
make libs
- 转到构建设置,并在“header 搜索路径”下添加 PcapPlusPlus 包含目录
- 在“其他链接器标志”下添加:
-L/usr/local/lib -lpcap, -lpthread $(inherited)
- 在项目设置的构建阶段选项卡下,在“Link Binary With libraries”中添加
SystemConfig
框架,corefoundation
,然后 libCommon++.a
,libPacket++.a
和 libPcap++.a
@publicstaticmain 如果有任何遗漏或不准确的地方,请告诉我。
我正在尝试通过使用 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 的步骤:
- 运行 arm64 的 PcapPlusPlus 配置脚本:
./configure-mac_os_x.sh --arm64
- 构建 PcapPlusPlus:
make libs
- 转到构建设置,并在“header 搜索路径”下添加 PcapPlusPlus 包含目录
- 在“其他链接器标志”下添加:
-L/usr/local/lib -lpcap, -lpthread $(inherited)
- 在项目设置的构建阶段选项卡下,在“Link Binary With libraries”中添加
SystemConfig
框架,corefoundation
,然后libCommon++.a
,libPacket++.a
和libPcap++.a
@publicstaticmain 如果有任何遗漏或不准确的地方,请告诉我。