LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 285|回复: 0

DLL 的实际使用

[复制链接]
发表于 2024-1-21 00:01:51 | 显示全部楼层 |阅读模式


Windows Python 是在 Microsoft Visual C++ 中构建的;使用其他编译器可能会也可能不会工作。本节的其余部分是针对 MSVC++ 的。

当在 Windows 中创建 DLL 时,你必须将 pythonXY.lib 传给链接器。 要编译两个 DLL,spam 和 ni (会使用 spam 中找到的 C 函数),你应当使用以下命令:

cl /LD /I/python/include spam.c ../libs/pythonXY.lib
cl /LD /I/python/include ni.c spam.lib ../libs/pythonXY.lib
第一条命令创建了三个文件: spam.obj, spam.dll 和 spam.lib。 Spam.dll 不包含任何 Python 函数 (例如 PyArg_ParseTuple()),但它通过 pythonXY.lib 可以知道如何找到所需的 Python 代码。

第二条命令创建了 ni.dll (以及 .obj 和 .lib),它知道如何从 spam 以及 Python 可执行文件中找到所需的函数。

不是每个标识符都会被导出到查找表。 如果你想要任何其他模块(包括 Python)都能看到你的标识符,你必须写上 _declspec(dllexport),就如在 void _declspec(dllexport) initspam(void) 或 PyObject _declspec(dllexport) *NiGetSpamData(void) 中一样。

Developer Studio 会添加很多你并不真正需要的导入库,命名你的可执行文件大小增加约 100K。 要摆脱它们,请使用项目设置对话框中的链接选项卡指定 忽略默认库。 将正确的 msvcrtxx.lib 添加到库列表中。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表