小编use*_*135的帖子

如何在Visual Studio 2010中构建这个简单的C++/SWIG/C#项目?

我需要帮助设置一个简单的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项目并尝试构建项目时,我收到两个链接器错误.

  1. 错误LNK1120:1个未解析的外部
  2. 错误LNK2001:未解析的外部符号_times2

第一条错误消息指向我的dll文件.第二个错误指​​向某个目标文件(*.obj).错误消息提到"_times2"的符号无法在我的项目中找到.

我怎样才能继续我的简单项目?是否有一些教程或一些文档逐步解释此过程?我找不到任何涉及使用SWIG,C#,Visual Studio 2010和.Net v4.0的C++的东西.

c++ swig visual-studio-2010 c#-4.0

10
推荐指数
1
解决办法
9552
查看次数

System.ComponentModel.BindingList:添加(对象)与AddNew()

是什么之间的区别System.ComponentModel.BindingList方法Add(object)AddNew()?MSDN文档说明了这一点:

  • Add:将对象添加到结尾Collection<T>.

  • AddNew:将新项添加到集合中.

看起来这两种方法都将一个项目添加到集合中,但是Add(object)一次性完成,而AddNew()稍微复杂一些.我的测试Add(object)似乎有效,但我想知道我是否使用了正确的方法.

那么这些方法有什么区别呢?

bindinglist inotifypropertychanged system.componentmodel c#-4.0

8
推荐指数
1
解决办法
2346
查看次数

使用 .Net 的 StatisticFormula 库

C# 命名空间 System.Windows.Forms.DataVisualization.Charting.StatisticFormula 似乎有一些我需要的统计函数。命名空间记录在MSDN 此处。我真的很想使用 InverseNormalDistribution(double Z) 函数。问题是构造函数是内部的,所以我无法以我所知道的任何方式访问这些函数。

有什么方法可以访问这个命名空间中的静态函数,还是我必须找到其他解决方案?

.net c# normal-distribution

4
推荐指数
1
解决办法
4662
查看次数

Excel多项式曲线拟合算法

Excel用于计算二阶多项式回归(曲线拟合)的算法是什么?是否有可用的示例代码或伪代码?

algorithm excel interpolation curve-fitting

4
推荐指数
1
解决办法
2万
查看次数

如何在没有扩展器的情况下对数据网格进行分组

我正在MSDN 上使用 Datagrid 分组示例。示例中的代码使用 Expander 来显示组的子行。我不想在我的代码中使用扩展器。我想始终显示每一行。如何在不使用 Expander 控件的情况下显示分组数据网格中的子行?

wpf xaml grouping expander wpfdatagrid

2
推荐指数
1
解决办法
4626
查看次数

在 DOS 批处理脚本中检查剩余的硬盘空间。如果条件不起作用

我希望在硬盘空间不足时收到通知。我正在运行 Windows 7 Professional,我认为一个快速批处理文件可以处理这个问题。我会安排它每天运行一次。这是我到目前为止:

这将使用“dir”命令和“find”命令查找剩余的磁盘空间。它将值存储在 Var1 中。(这对我有用)

@echo off
FOR /F "tokens=*" %%i in ('dir ^| find "free"') do SET WinVer=%%i 
FOR /F "tokens=1-3 delims=]-" %%A IN ("%WinVer%" ) DO ( 
SET Var1=%%A 
)
Run Code Online (Sandbox Code Playgroud)

这会从结果中提取数字并删除逗号。结果看起来像没有引号的“111222333444”:(这对我有用)

set Var1=%Var1:~10,15%
set Var1=%Var1:,=%
Run Code Online (Sandbox Code Playgroud)

这会检查 Var1 中的值是否小于 100 GB(我假设的磁盘空间)。如果是这样,它会创建一个名为“lowSpace.txt”的文件,我稍后会看到。(这对我不起作用)

if %Var1% leq 100000000000 dir > lowSpace.txt
Run Code Online (Sandbox Code Playgroud)

这个“if”语句给我带来了问题。我的可用磁盘空间大约为 150 GB(或 150000000000),因此 if 条件应该失败并且“dir > lowSpace.txt”不应运行,但无论如何它都会运行。

  • 如果我将“if”语句中的常量从 100000000000 增加到 500000000000,就会按照我的预期创建文件“lowSpace.txt”。

  • 或者,如果我再次将常量从 100000000000 增加到 500000000000 并将条件从“leq”更改为“geq”,则在我希望不会创建文件“lowSpace.txt”时创建它。

我比较我的数字错了吗?还是我的“if”语句有问题?代码似乎认为 150 GB 大于和小于 100 GB。


这是我的完整脚本:

@echo off
FOR /F "tokens=*" …
Run Code Online (Sandbox Code Playgroud)

if-statement batch-file windows-7

0
推荐指数
1
解决办法
9130
查看次数