从 C++ 源文件创建 Windows DLL

Posted

技术标签:

【中文标题】从 C++ 源文件创建 Windows DLL【英文标题】:Creating Windows DLL from C++ source files 【发布时间】:2009-10-21 23:22:42 【问题描述】:

我有多个 C++ 源文件,我想使用它们创建动态链接库。

我看到这发生在 linux 中,使用 gcc -shared 和 ln

但是对于 Windows,我想我必须修改源文件才能生成 DLL。

有没有办法使用提供的源文件生成 DLL(类似于 linux 中的 *.so 的文件)。如果我错了请纠正我,我认为 *so 是 linux 的 dll。

需要这个的原因是为了在 Windows Platfrom 中使用 SWIG 在 python 中调用 C++ 函数。我被困在需要我在 Windows 中生成 dll 的步骤。

【问题讨论】:

【参考方案1】:

确切的方法取决于您使用的编译器,但该过程可能已记录在案。例如,如果您想使用 Visual Studio 创建一个 DLL,可以使用演练here。

【讨论】:

创建DLL的过程取决于你使用的是哪个EDITOR?嗯?【参考方案2】:

可从 DLL 外部调用的 DLL 函数具有特殊的宏关键字

__declspec(dllexport) void __cdecl SomeFunction(int a, int b);

【讨论】:

要么,要么您必须创建一个带有导出定义的.def 文件。【参考方案3】:

你用的是什么编译器?对于 Visual C++,从给定目标文件创建动态库的命令行如下所示:

link -nologo -dll -out:mylib.dll -implib:mylib.lib myobj1.obj myobj2.obj ...

此外,在将源文件编译为目标文件时,您需要使用 -D 选项来定义任何必要的宏,以确保导出动态库的符号。

【讨论】:

以上是关于从 C++ 源文件创建 Windows DLL的主要内容,如果未能解决你的问题,请参考以下文章

C ++如何从DLL(Windows)的文件名中获取进程ID?

从 C++ dll 导出一个类?

WindowsError:异常:使用从 C++ 到 Python 的 ctypes 创建 DLL 时出现访问冲突或 Windows 错误 193

从 C# 调用 C++ 代码而不创建 dll?

如何在 C++ 中从 dll(dll 中的构造函数)创建一些类?

C++ 从 DLL 创建结构