如何在Linux上使用SWIG生成C#,因为它可以在Win7上正确生成 我使用WISG3.0.12从Wi7上从C++生成C.*包装器。 命令是: swig.exe -c++ -csharp -namespace DS -DWIN32 -outdir D:/DS_CSharp/GeneratedSWIG DS.i

如何在Linux上使用SWIG生成C#,因为它可以在Win7上正确生成 我使用WISG3.0.12从Wi7上从C++生成C.*包装器。 命令是: swig.exe -c++ -csharp -namespace DS -DWIN32 -outdir D:/DS_CSharp/GeneratedSWIG DS.i,c++,linux,debian,swig,C++,Linux,Debian,Swig,这在窗户上很好用。我们在VisualStudio中编译了C++和SWIG生成的包装器,编译后的DLL可以用C代码调用。 现在,我们需要用GCC和MNO来将C++和C代码转换成Debian 9。那么,在Linux上生成包装器代码的正确命令是什么 在上面的Win7命令中,它有一个宏“WIN32”,我想Linux中不需要这个宏。Win7上生成的wrapper.cxx文件包含许多似乎适用于Windwos或GCC的条件定义,例如: #ifndef SWIGEXPORT # if defined(_WIN3

这在窗户上很好用。我们在VisualStudio中编译了C++和SWIG生成的包装器,编译后的DLL可以用C代码调用。

现在,我们需要用GCC和MNO来将C++和C代码转换成Debian 9。那么,在Linux上生成包装器代码的正确命令是什么

在上面的Win7命令中,它有一个宏“WIN32”,我想Linux中不需要这个宏。Win7上生成的wrapper.cxx文件包含许多似乎适用于Windwos或GCC的条件定义,例如:

#ifndef SWIGEXPORT
# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
#   if defined(STATIC_LINKED)
#     define SWIGEXPORT
#   else
#     define SWIGEXPORT __declspec(dllexport)
#   endif
# else
#   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
#     define SWIGEXPORT __attribute__ ((visibility("default")))
#   else
#     define SWIGEXPORT
#   endif
# endif
#endif
如何为Linux和gcc定义正确的宏

此外,我们的DS.i文件还包含一个与Windows相关的include,我不确定我们是否也应该删除Linux的include:

%include <windows.i>
%include <std_string.i>
%include <std_wstring.i>
... ...
%include
%包括
%包括
... ...
当使用gcc生成生成代码时,会自动定义
\uuuuu GNUC\uuuu
。这是通过在宏定义中添加打印输出来检查的,例如#警告我的消息

swig.exe -c++ -csharp -namespace DS -outdir D:/DS_CSharp/GeneratedSWIG DS.i