use*_*135 10 c++ swig visual-studio-2010 c#-4.0
我需要帮助设置一个简单的C++/C#SWIG项目.我很难将一个使用SWIG绑定的C++项目组合在一起.我正在使用Visual Studio 2010和最新版本的SWIG.
我的代码很简单:
cpp_file.h:
#pragma once
class cpp_file
{
public:
cpp_file(void);
~cpp_file(void);
int times2(int arg);
};
Run Code Online (Sandbox Code Playgroud)
cpp_file.cpp
#include "cpp_file.h"
cpp_file::cpp_file(void)
{
}
cpp_file::~cpp_file(void)
{
}
int cpp_file::times2(int arg)
{
return arg * 2;
}
Run Code Online (Sandbox Code Playgroud)
我的SWIG界面文件是:
cpp_file.i
/* cpp_file.i */
%module cpp_file
%{
/* Put header files here or function declarations like below */
extern int times2(int arg);
%}
extern int times2(int arg);
Run Code Online (Sandbox Code Playgroud)
我可以很好地编译这个项目.然后我运行SWIG命令来生成包装器:
swig -csharp "C:/pathToFile/cpp_file.i"
Run Code Online (Sandbox Code Playgroud)
我不知道该做什么.我找不到任何解释Visual Studio 2010中的操作的教程或文档.
当我将SWIG生成的*cpp_file_wrap.c*文件添加到我的Visual Studio 2010项目并尝试构建项目时,我收到两个链接器错误.
第一条错误消息指向我的dll文件.第二个错误指向某个目标文件(*.obj).错误消息提到"_times2"的符号无法在我的项目中找到.
我怎样才能继续我的简单项目?是否有一些教程或一些文档逐步解释此过程?我找不到任何涉及使用SWIG,C#,Visual Studio 2010和.Net v4.0的C++的东西.
Mar*_*nen 19
完整构建VS2010 IDE的分步说明:
%module名以匹配.<project>为项目名称.将为<project>_EXPORTS您的DLL项目定义预处理器定义(请参阅项目,属性,C++,预处理器). %include <windows.i>帮助SWIG理解某些"Window-isms"之类的__declspec.#pragma once
#ifdef <project>_EXPORTS
#define <project>_API __declspec(dllexport)
#else
#define <project>_API __declspec(dllimport)
#endif
class <project>_API cpp_file
{
public:
cpp_file(void);
~cpp_file(void);
int times2(int arg);
};
Run Code Online (Sandbox Code Playgroud)
%module cpp
%{
#include "cpp_file.h"
%}
%include <windows.i>
%include "cpp_file.h"
Run Code Online (Sandbox Code Playgroud)
cpp_file.i,属性,常规,项目类型作为自定义生成工具.cpp_file.i并编译.这应该创建四个文件:C#Generated文件夹中的三个文件和C++项目中的一个文件.bin\Debug来..\Debug或任何到C++项目输出目录的相对路径..exe和.dll需要位于同一目录中.Main,添加以下行:var cpp = new cpp_file();Console.WriteLine(cpp.times2(5));祝好运!如果你让它工作,请告诉我.我可以扩展任何不清楚的事情.
| 归档时间: |
|
| 查看次数: |
9552 次 |
| 最近记录: |