如何使用Visual Studio 2010中的SWIG创建DLL

use*_*530 20 c++ python swig visual-studio-2010

我已经尝试了几周让Microsoft Visual Studio 2010为我创建一个带有SWIG的DLL.如果您已经完成了这个过程,那么您是否愿意提供一个深思熟虑的逐步流程解释?我在网上到处寻找并花了很多时间试图这样做; 但是我发现的所有教程都已过时或解释不清楚.

我成功地用cygwin完成了这个过程; 但正如你们中的一些人所知,cygwin DLL并不是很实用.

因此,我知道.i,.cpp和.h文件可以一起创建DLL.我只需要知道如何使用Visual Studio C++ 2010执行此操作.我所针对的语言是Python.

请不要将我介绍给其他网站; 因为很有可能我已经去过那里并试过了.此外,请不要嗤之以鼻的评论,因为我在不久的将来让它工作非常重要.

非常感谢您的帮助!

Mar*_*nen 52

分步说明.这假设您拥有源并正在构建单个DLL扩展,将源直接链接到它.创建一个工作项目后我没有回过头来,所以我可能错过了一些东西.如果你遇到困难,请评论这篇文章.如果您有一个现有的DLL并且想要创建一个包装它的Python扩展DLL,则此步骤略有不同.如果您对此帖子的评论需要帮助,我会对其进行扩展.

编辑2012年8月19日:如果以C示例开头,请不要-c++在步骤13中使用,.c而是.cxx在步骤14和19中使用而不是包装文件扩展名.

  1. 启动Visual Studio 2010
  2. 来自现有代码的文件,新建,项目......
  3. 选择"Visual C++"项目类型,然后单击"下一步".
  4. 输入.cpp/.h/.i文件所在的项目文件位置.
  5. 对于Project Name,选择.i文件中%module语句中使用的名称(大小写).
  6. 选择项目类型"动态链接库(DLL)项目",然后单击"下一步".
  7. 添加到搜索路径包括Python.h文件的路径,通常类似于"C:\ Python27\include",然后单击"下一步".
  8. 单击完成.
  9. 右键单击解决方案资源管理器中的项目,添加,现有项...,然后选择.i文件.
  10. 右键单击.i文件,Properties,然后选择Configuration"All Configurations".
  11. 将项目类型更改为"自定义生成工具",然后单击应用.
  12. 在属性中选择"自定义构建工具"(它将在上面的应用后出现).
  13. 输入命令行"swig -c ++ -python -outdir $(Outdir)%(Identity)"(这假定SWIG在您的路径中,并根据需要将生成的.py文件重定向到Debug或Release目录).
  14. 在输出中输入"%(文件名)_wrap.cxx; $(Outdir)%(文件名).py".
  15. 单击确定.
  16. 右键单击.i文件,然后选择"编译".
  17. 右键单击项目,添加,新建过滤器,将其命名为"生成的文件".
  18. 右键单击"生成的文件",单击"属性",然后将"SCC文件"设置为"False"(如果使用源代码控制,则可以防止VS2010尝试检入此过滤器中生成的文件).
  19. 右键单击"生成的文件","添加","退出项目",然后选择编译生成的_wrap.cxx文件.
  20. 右键单击项目"属性".
  21. 选择配置"所有配置".
  22. 选择Configuration Properties,Linker,General,Additional Library Directories并添加python库的路径,通常为"C:\ Python27\libs".
  23. 选择Configuration Properties,General并将TargetName设置为"_ $(ProjectName)".
  24. 将目标扩展名设置为".pyd".
  25. 构建项目的"发布"版本.除非您构建Python本身的调试版本,否则无法构建调试版本.
  26. 打开一个控制台,转到项目的Release目录,运行python,导入模块,然后调用一个函数!

  • 对于Visual Studio 2017,没有右键单击.i文件的"编译"选项.请注意,您不必从Visual Studio自定义编译.i文件.您可以先从shell调用swig,然后手动将生成的_wrap.c/.cpp添加到Visual Studio项目中. (2认同)