152 lines
3.9 KiB
Markdown
152 lines
3.9 KiB
Markdown
|
|
# MFC使用CSerialPort动态库
|
|||
|
|
|
|||
|
|
CommMFCDLL示例代码支持两种方式编译:
|
|||
|
|
|
|||
|
|
- cmake方式(可生成vs2008及以上的版本)
|
|||
|
|
- Visual Studio 2008及以上直接调用(vs2008以上版本可通过Visual Studio进行升级)
|
|||
|
|
|
|||
|
|
注意事项:
|
|||
|
|
|
|||
|
|
- x64动态库只能用于x64的程序调用,x86同理
|
|||
|
|
- debug的动态库只能用于动态库程序调用,release同理
|
|||
|
|
- 动态库和使用的程序一般要使用相同编译器
|
|||
|
|
|
|||
|
|
|
|||
|
|
## 1. 使用cmake生成CSerialPort动态库
|
|||
|
|
```
|
|||
|
|
$ git clone https://github.com/itas109/CSerialPort
|
|||
|
|
$ cd CSerialPort
|
|||
|
|
$ mkdir bin
|
|||
|
|
$ cd bin
|
|||
|
|
$ cmake .. -DCMAKE_INSTALL_PREFIX=install -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON
|
|||
|
|
$ cmake --build . --config Debug
|
|||
|
|
$ cmake --install . --config Debug
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
CSerialPort安装目录结构:
|
|||
|
|
```
|
|||
|
|
D:/CSerialPort/bin $ tree
|
|||
|
|
.
|
|||
|
|
+--- bin
|
|||
|
|
| +--- libcserialport.dll
|
|||
|
|
+--- include
|
|||
|
|
| +--- CSerialPort
|
|||
|
|
| | +--- osplatformutil.h
|
|||
|
|
| | +--- SerialPort.h
|
|||
|
|
| | +--- SerialPortBase.h
|
|||
|
|
| | +--- SerialPortInfo.h
|
|||
|
|
| | +--- SerialPortInfoBase.h
|
|||
|
|
| | +--- SerialPortInfoUnixBase.h
|
|||
|
|
| | +--- SerialPortInfoWinBase.h
|
|||
|
|
| | +--- SerialPortUnixBase.h
|
|||
|
|
| | +--- SerialPortWinBase.h
|
|||
|
|
| | +--- SerialPort_global.h
|
|||
|
|
| | +--- SerialPort_version.h
|
|||
|
|
| | +--- sigslot.h
|
|||
|
|
+--- lib
|
|||
|
|
| +--- cmake
|
|||
|
|
| | +--- CSerialPort
|
|||
|
|
| | | +--- cserialport-config.cmake
|
|||
|
|
| +--- libcserialport.lib
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 2. MFC中以cmake方式使用CSerialPort的动态库【推荐】
|
|||
|
|
|
|||
|
|
### 2.1 通过find_package自动搜索CSerialPort头文件及动态库【推荐】
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
cd D:/CSerialPort/examples/CommMFCDLL
|
|||
|
|
mkdir bin
|
|||
|
|
cd bin
|
|||
|
|
cmake .. -DCMAKE_PREFIX_PATH="../../bin/install"
|
|||
|
|
cmake --build . --config Debug
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
注意:
|
|||
|
|
出现如下错误,可设置CMAKE_PREFIX_PATH指定搜索路径,如`cmake .. -DCMAKE_PREFIX_PATH="../../bin/install"`
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Could not find a package configuration file provided by "CSerialPort" with
|
|||
|
|
any of the following names:
|
|||
|
|
|
|||
|
|
CSerialPortConfig.cmake
|
|||
|
|
cserialport-config.cmake
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.2 手动指定头文件及动态库
|
|||
|
|
|
|||
|
|
注意:可修改`examples\CommMFCDLL\CMakeLists.txt`手动配置路径
|
|||
|
|
|
|||
|
|
CMakeLists.txt
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
cmake_minimum_required(VERSION 2.8.12)
|
|||
|
|
|
|||
|
|
project(CommMFCDLL)
|
|||
|
|
|
|||
|
|
find_package(MFC)
|
|||
|
|
if (NOT MFC_FOUND)
|
|||
|
|
MESSAGE(FATAL_ERROR "MFC not found")
|
|||
|
|
endif()
|
|||
|
|
|
|||
|
|
add_definitions(-D_AFXDLL)
|
|||
|
|
set(CMAKE_MFC_FLAG 2) # 1 the static MFC library 2 shared MFC library
|
|||
|
|
|
|||
|
|
set(MFCFiles CommMFCDLL.cpp CommMFCDLL.h CommMFCDLL.rc CommMFCDLLDlg.cpp CommMFCDLLDlg.h Resource.h stdafx.cpp stdafx.h targetver.h)
|
|||
|
|
|
|||
|
|
if (NOT CSERIALPORT_INSTALL_PATH)
|
|||
|
|
set(CSERIALPORT_INSTALL_PATH CACHE STRING "set CSerialPort Install Path" FORCE)
|
|||
|
|
set_property(CACHE CSERIALPORT_INSTALL_PATH PROPERTY STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/../../bin/install")
|
|||
|
|
endif()
|
|||
|
|
include_directories(${CSERIALPORT_INSTALL_PATH}/include)
|
|||
|
|
link_directories(${CSERIALPORT_INSTALL_PATH}/lib)
|
|||
|
|
|
|||
|
|
add_executable(${PROJECT_NAME} WIN32 ${MFCFiles})
|
|||
|
|
target_link_libraries (${PROJECT_NAME} libcserialport)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
cd D:/CSerialPort/examples/CommMFCDLL
|
|||
|
|
mkdir bin
|
|||
|
|
cd bin
|
|||
|
|
cmake .. -DCSERIALPORT_INSTALL_PATH=../../bin/install
|
|||
|
|
cmake --build . --config Debug
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 3. MFC中手动配置方式使用CSerialPort的动态库
|
|||
|
|
|
|||
|
|
### 3.1 添加头文件路径
|
|||
|
|
|
|||
|
|
右键【CommMFCDLL根命名空间】-【属性】-【C/C++】-【常规】-【附加包含目录】-添加CSerialPort的头文件目录
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
D:\CSerialPort\bin\install\include
|
|||
|
|
```
|
|||
|
|
或
|
|||
|
|
```
|
|||
|
|
$(ProjectDir)\..\..\bin\install\include
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.2 添加库文件路径
|
|||
|
|
|
|||
|
|
- 添加库文件目录
|
|||
|
|
|
|||
|
|
右键【CommMFC根命名空间】-【属性】-【链接器】-【常规】-【附加库目录】-添加CSerialPort的库文件目录
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
D:\CSerialPort\bin\install\lib
|
|||
|
|
```
|
|||
|
|
或
|
|||
|
|
```
|
|||
|
|
$(ProjectDir)\..\bin\install\lib
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- 添加库附加依赖项
|
|||
|
|
|
|||
|
|
右键【CommMFC根命名空间】-【属性】-【链接器】-【输入】-【附加依赖项】-添加`libcserialport.lib`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
Reference:
|
|||
|
|
1. https://github.com/itas109/CSerialPort
|
|||
|
|
2. https://gitee.com/itas109/CSerialPort
|
|||
|
|
3. https://blog.csdn.net/itas109
|