C++创建和使用动态链接库
Posted ay-a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++创建和使用动态链接库相关的知识,希望对你有一定的参考价值。
一个简单的动态链接库的生成和调用例子,太过简单,大神请绕道。
一、创建动态链接库
使用vs创建工程选择动态链接库。
在项目中创建源文件和头文件,并在文件中添加以下代码。
在头文件中添加以下代码
// dlltest.h 头文件,使用动态链接库时需要包含头文件 #pragma once #ifdef __DLLEXPORT #define __DLL_EXP _declspec(dllexport) // 导出函数 - 生成dll文件时使用 #else #define __DLL_EXP _declspec(dllimport) // 导入函数 -使用dll是使用 #endif // __DLLEXPORT // 判断是否是c++ #if defined(__cplusplus)||defined(c_plusplus) extern "C" #endif __DLL_EXP int add(int a, int b); __DLL_EXP int sub(int a, int b); #if defined(__cplusplus)||defined(c_plusplus) #endif
在源文件文件中添加以下代码
// dlltest.cpp #include<stdio.h> #include"dlltest.h" #include"pch.h" int add(int a, int b) return a + b; int sub(int a, int b) return a - b;
在工程属性,
C/C++ => 预处理器 => 预处理定义
中添加预定义宏__DLLEXPORT
.在工程属性,
C/C++ => 预编译头 => 预处编译头
选择不使用预编译头。编译生成dll文件和lib文件(如果没有生成lib文件,需要在工程中添加一个Source.def文件,内容为LIBRARY)。
二、使用动态链接库
1. 使用c++调用动态链接库
新建一个c++工程,包含
dlltest.h
头文件,并引用生成的lib文件。添加源文件
testcpp.cpp
,在源文件中输入以下代码:#include <iostream> #include"dlltest.h" int main() printf("test cpp\n"); std::cout << "Hello World!\n"; printf("3+2 = %d\n", add(3, 2)); printf("3-2 = %d\n", sub(3, 2));
编译,运行即可调用上面生成的动态链接库。
2.使用c调用动态链接库
新建一个c语言工程,包含
dlltest.h
头文件,并引用生成的lib文件。添加源文件
testc.c
,在源文件中输入以下代码:// testc.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <stdio.h> #include "dlltest.h" int main() printf("test c\n"); printf("3+2 = %d\n", add(3, 2)); printf("3-2 = %d\n", sub(3, 2));
编译,运行即可调用上面生成的动态链接库。
以上是关于C++创建和使用动态链接库的主要内容,如果未能解决你的问题,请参考以下文章