windows 命令行cpp生成dll lib
时间: 2023-08-21 09:05:51 浏览: 198
生成 DLL:
1. 编写 C++ 代码,将需要导出的函数声明为 `__declspec(dllexport)`,例如:
```cpp
#include <iostream>
extern "C" __declspec(dllexport) void HelloWorld()
{
std::cout << "Hello, World!" << std::endl;
}
```
2. 使用 Visual Studio 打开项目,选择“动态链接库”作为项目类型,将代码添加到项目中。
3. 编译项目,如果没有错误,将会生成 DLL 文件。
生成 LIB:
1. 使用 Visual Studio 打开“开发人员命令提示符”,进入项目所在目录。
2. 输入以下命令:
```batch
cl /c /EHsc /Fo:MyLib.obj MyLib.cpp
link /DLL /OUT:MyLib.dll MyLib.obj
lib /OUT:MyLib.lib MyLib.obj
```
其中,`/c` 表示编译,`/EHsc` 表示启用异常处理,`/Fo:` 表示输出文件名。
第二个命令中,`/DLL` 表示生成 DLL 文件,`/OUT:` 表示输出文件名。
第三个命令中,`/OUT:` 表示输出文件名。
如果没有错误,将会生成 DLL 和 LIB 文件。
相关问题
intel编译器windows下用命令行把cpp变成成dll,并且用fortran调用c++接口,生成可执行文件,嵌入资源到可执行文件
要将cpp编译成dll,可以使用以下命令:
```
cl /LD /EHsc /I"path/to/include/files" /link /LIBPATH:"path/to/lib/files" /OUT:"path/to/output/file.dll" "path/to/source/file.cpp"
```
其中,
- `/LD` 表示将代码编译成动态链接库(dll)
- `/EHsc` 表示启用异常处理
- `/I"path/to/include/files"` 表示指定头文件的路径
- `/link` 表示指定链接器参数
- `/LIBPATH:"path/to/lib/files"` 表示指定库文件的路径
- `/OUT:"path/to/output/file.dll"` 表示指定输出的dll文件名
- `"path/to/source/file.cpp"` 表示指定源文件的路径和文件名
要在Fortran中调用C++接口,需要使用extern "C"将C++函数声明为C函数。例如:
```cpp
extern "C" {
void my_cpp_function(int arg1, double arg2);
}
```
然后在Fortran中声明该函数:
```fortran
interface
subroutine my_cpp_function(arg1, arg2) bind(C)
use iso_c_binding
integer(c_int), value :: arg1
real(c_double), value :: arg2
end subroutine my_cpp_function
end interface
```
最后,要将资源嵌入可执行文件,可以使用资源文件(.rc文件)和资源编译器(rc.exe)。资源文件可以包含各种类型的资源,例如图标、位图、字符串等。资源编译器可以将资源文件编译成资源对象文件(.res文件),然后将该文件链接到可执行文件中。以下是一个简单的资源文件示例:
```rc
#include "resource.h"
MY_ICON ICON "path/to/icon.ico"
MY_STRING STRINGTABLE
BEGIN
IDS_HELLO_WORLD "Hello, world!"
END
```
要将该资源文件编译成资源对象文件,可以使用以下命令:
```
rc /fo "path/to/output/file.res" "path/to/resource/file.rc"
```
其中,
- `/fo "path/to/output/file.res"` 表示指定输出的资源对象文件名
- `"path/to/resource/file.rc"` 表示指定资源文件的路径和文件名
最后,可以使用以下命令将资源对象文件链接到可执行文件中:
```
link /OUT:"path/to/output/file.exe" "path/to/object/files" "path/to/resource/object/file.res"
```
其中,
- `/OUT:"path/to/output/file.exe"` 表示指定输出的可执行文件名
- `"path/to/object/files"` 表示指定要链接的对象文件的路径和文件名
- `"path/to/resource/object/file.res"` 表示指定要链接的资源对象文件的路径和文件名
请注意,命令中的路径和文件名应根据实际情况进行修改。
Cmake命令行编译DLL
在CMake中,编译动态链接库(DLL)通常涉及到设置目标类型、添加依赖项以及指定输出路径等步骤。以下是使用CMake基本命令行编译DLL的示例:
1. **创建CMakeLists.txt**:首先,在项目根目录下创建一个名为`CMakeLists.txt`的文件,这是CMake配置的核心。
```cmake
project(MyLibrary)
# 设置目标为动态链接库
add_library(MyLibrary SHARED source_files.cpp)
```
这里的`MyLibrary`是库名,`SHARED`表示动态链接库,`source_files.cpp`替换为你的源文件列表。
2. **指定输出路径**:
如果你想把库放在特定位置,可以使用`install(TARGETS)`指令安装到预设的路径,如:
```cmake
install(TARGETS MyLibrary DESTINATION lib)
```
3. **编译并生成构建文件**:
使用命令行运行CMake生成适合当前平台的构建脚本(例如Unix系统下的Makefile或Windows下的VS解决方案)。假设你在命令行里:
```sh
cd <your_project_folder>
cmake .
```
4. **实际编译**:
根据生成的构建脚本(如Unix的Makefile),你可以通过以下命令编译库:
```sh
make
```
或者在Windows上打开VS Studio,并选择“构建” > “构建解决方案”。
5. **测试和链接应用程序**:
编译完成后,你可以将这个DLL添加到其他项目的依赖项中,并确保链接器能正确地找到它。
阅读全文