C#和C++在编译过程中的文件区分
1. .h是头文件(Header File)
用来 声明类、函数、常量等。
通常不包含实际实现,只是“定义接口”
// 示例:math_utils.h#pragma once
int add(int a, int b); //定义函数名
2. .cpp是源文件(Source File)
用来实现头文件中声明的函数,类等
// 示例:math_utils.cpp#include "math_utils.h" //引入头文件int add(int a, int b) { //实现return a + b;
}
3. 库
3.1 静态库 .lib
把.cpp文件编译成 .lib文件。
示例: math_utils.cpp --编译--> math_utils.lib
静态库是“编译时拷进程序里的”
//示例:在另一个程序里使用#include <iostream>
#include "math_utils.h" // 引用静态库的头文件int main() {std::cout << "3 + 5 = " << Add(3, 5) << std::endl;return 0;
}//提示:需要提前链接库,不然程序不知道Add方法
步骤1.添加库路径
在 Solution Explorer 中右键项目 → 选择 Properties(属性)→ Configuration Properties → Linker → General → Additional Library Directories
步骤2.添加.lib文件
在 Solution Explorer 中右键项目 → 选择 Properties(属性)→ Configuration Properties → Linker → Input
3.2 动态库 .dll
把.cpp文件编译成 .dll文件。
示例: math_utils.cpp --编译--> math_utils.dll
动态库是“程序运行时才加载的”
//math_utils.h#pragma once// 这里要加 __declspec(dllexport) / __declspec(dllimport)
#ifdef MATHLIB_EXPORTS
#define MATHLIB_API __declspec(dllexport)
#else
#define MATHLIB_API __declspec(dllimport)
#endifextern "C" MATHLIB_API int Add(int a, int b);//设置宏定义 MATHLIB_EXPORTS,编译后会生成:
//math_utils.dll(动态库)
//math_utils.lib(导入库,用于链接)
//math_utils.cpp#include "math_utils.h"int Add(int a, int b) {return a + b;
}
//main.cpp#include <iostream>
#include "math_utils.h"int main() {std::cout << "7 + 2 = " << Add(7, 2) << std::endl;return 0;
}//编译链接时:
//需要 math_utils.lib(编译时用),操作同上面
//运行时必须放 math_utils.dll 在可执行文件旁边
C#就比较简单了
1. .cs直接就是声明+实现
2. .cs编译后生成一个.dll文件
3. 创建类库项目,定义,实现后编译,就生成了.dll文件,如MyLib.dll
4. 其他项目再 using MyLib 引入类库