从 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?
WindowsError:异常:使用从 C++ 到 Python 的 ctypes 创建 DLL 时出现访问冲突或 Windows 错误 193