如何在Win7上正确生成时,如何使用SWIG在Linux上生成C#

问题描述 投票:1回答:1

我正在使用SWIG 3.0.12在Win7上从C ++生成C#包装器。命令是:

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

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

现在,我们需要使用gcc和mono将C ++和C#代码移动到Debian 9中。那么在Linux上生成包装器代码的正确命令是什么?

在上面的Win7命令中它有一个宏“WIN32”,我想这在Linux中是不需要的。 Win7上生成的包装器.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相关的包含,我不确定我们是否也将删除它用于Linux:

%include <windows.i>
%include <std_string.i>
%include <std_wstring.i>
... ...
c++ linux debian swig
1个回答
0
投票
swig.exe -c++ -csharp -namespace DS -outdir D:/DS_CSharp/GeneratedSWIG DS.i

使用gcc构建生成代码时会自动定义__GNUC__。这通过在宏定义中添加打印输出来检查,例如, #warning我的消息。

© www.soinside.com 2019 - 2024. All rights reserved.