使用 vcpkg 安装(推荐)
1. 安装 vcpkg
打开命令提示符(cmd)或 PowerShell,执行:
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg integrate install
2. 安装 ZeroMQ 和 cppzmq
powershell
.\vcpkg install zeromq cppzmq:x64-windows
添加基本测试代码
CMake文件
cmake_minimum_required(VERSION 3.15)
project(ZeroMQDemo)
# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 如果使用了 vcpkg 工具链,find_package 会自动找到库
find_package(cppzmq REQUIRED)
add_executable(server server.cpp)
add_executable(client client.cpp)
# 链接库
target_link_libraries(server PRIVATE cppzmq)
target_link_libraries(client PRIVATE cppzmq)
服务端
C++
#include <zmq.hpp>
#include <iostream>
#include <string>
int main() {
zmq::context_t context(1);
zmq::socket_t socket(context, zmq::socket_type::rep);
socket.bind("tcp://*:5555");
std::cout << "Server listening on tcp://*:5555..." << std::endl;
while (true) {
zmq::message_t request;
auto res = socket.recv(request, zmq::recv_flags::none);
if (res) {
std::cout << "Received: " << request.to_string() << std::endl;
}
zmq::message_t reply(5);
memcpy(reply.data(), "World", 5);
socket.send(reply, zmq::send_flags::none);
}
return 0;
}
客户端
C++
#include <zmq.hpp>
#include <iostream>
#include <string>
int main() {
zmq::context_t context(1);
zmq::socket_t socket(context, zmq::socket_type::req);
socket.connect("tcp://localhost:5555");
zmq::message_t request(5);
memcpy(request.data(), "Hello", 5);
socket.send(request, zmq::send_flags::none);
std::cout << "Sent: Hello" << std::endl;
zmq::message_t reply;
auto res = socket.recv(reply, zmq::recv_flags::none);
if (res) {
std::cout << "Received: " << reply.to_string() << std::endl;
}
return 0;
}
解决编译报错缺少libzmq-mt-4_3_5.dll
方案一:复制 DLL 到可执行文件目录(最简单)
找到 vcpkg 安装的 DLL 文件并复制到你的 build/Release/ 目录:
powershell
# 查找 DLL 文件位置
dir E:\vcpkg\installed\x64-windows\bin\libzmq*.dll
# 复制到你的程序目录
copy E:\vcpkg\installed\x64-windows\bin\libzmq-mt-4_3_5.dll .\build\Release\
方案二:设置环境变量(推荐)
临时设置(当前命令窗口):powershell
# 在运行程序前设置
$env:PATH += ";E:\vcpkg\installed\x64-windows\bin"
# 然后运行程序
.\build\Release\server.exe
永久设置:powershell
# 永久添加到用户环境变量
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";E:\vcpkg\installed\x64-windows\bin", "User")
编译运行
powershell
mkdir build && cd build
cmake .. -DCMAKE_PREFIX_PATH="你的vcpkg安装路径/installed/x64-windows"
cmake --build . --config Release
编译完成后,在 build/Release/ 目录下运行程序 :
powershell
# 终端1
.\server.exe
# 终端2
.\client.exe
预期运行对应生成的exe输出
- 客户端:
Sent: Hello → Received: World - 服务端:
Received: Hello