将c程序打包为dll和exe

本文最后更新于 2024年5月16日。

将c编译为dll

使用gcc

(env_pandas) PS E:\mydoc\sync_pc_home_work\pyfile\py_c> gcc -shared -o add.dll add.c

这种方式直接生成64位dll,且只生成dll。

使用cl.exe

下面的打包方法是在vscode的shell中进行的。
需要注意vscode的启动方式否则报错
[[仅当从 VS 开发人员命令提示符处运行 VS Code 时,cl.exe 生成和调试才可用。]]

这种方法打包出来是32位dll,即便cl.exe和vscode都是64位的。
除了生成dll外,还会生成相应的lib,obj,exp文件。

(env_pandas) PS E:\mydoc\sync_pc_home_work\pyfile> cd py_c
(env_pandas) PS E:\mydoc\sync_pc_home_work\pyfile\py_c> cl /LD add.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.33.31629 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.
add.c
Microsoft (R) Incremental Linker Version 14.33.31629.0
Copyright (C) Microsoft Corporation.  All rights reserved.
/out:add.dll
/dll
/implib:add.lib
add.obj
Creating library add.lib and object add.exp

如果想要打包成64位dll,需要在下面工具中打包:
x64 Native Tools Command Prompt for VS 2022

C:\Program Files\Microsoft Visual Studio\2022\Community>e:
E:\mydoc\sync_pc_home_work\pyfile\py_c>cd E:\mydoc\sync_pc_home_work\pyfile\py_c
E:\mydoc\sync_pc_home_work\pyfile\py_c>cl /LD add.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.33.31629 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.
add.c
Microsoft (R) Incremental Linker Version 14.33.31629.0
Copyright (C) Microsoft Corporation.  All rights reserved.
/out:add.dll
/dll
/implib:add.lib
add.obj
Creating library add.lib and object add.exp
E:\mydoc\sync_pc_home_work\pyfile\py_c>

将c编译为exe

使用gcc

gcc -o c_program .\c_program.c

使用cl

cl /EHsc /Fe:MyProgram.exe MySourceFile.c