Octave c++ and VS2010
Octave c++ and VS2010
我正在尝试将Octave与Visual C++一起使用。
我已经下载了octave-3.6.1-vs2010-setup-1.exe
.创建了一个新项目,添加了八度include
文件夹以包含 lib 路径的路径、octinterp.lib
和octave.lib
,我将 Octave bin
文件夹添加为运行目录。
该程序编译和运行良好,除了feval
导致异常的函数:
Microsoft C++例外:octave_execution_exception在内存位置 0x0012faef
在八度侧:
无效的调整大小操作或对越界数组元素的不明确赋值。
我做错了什么?
独立程序的代码:
#include <octave/octave.h>
#include <octave/oct.h>
#include <octave/parse.h>
int main(int argc, char **argv)
{
if (octave_main (argc, argv, true))
{
ColumnVector NumRands(2);
NumRands(0) = 10;
NumRands(1) = 1;
octave_value_list f_arg, f_ret;
f_arg(0) = octave_value(NumRands);
f_ret = feval("rand",f_arg,1);
Matrix unis(f_ret(0).matrix_value());
}
else
{
error ("Octave interpreter initialization failed");
}
return 0;
}
提前谢谢。
我自己试过了,问题似乎源于feval
行。
现在我没有解释为什么,但通过简单地切换到"Release"
配置而不是"Debug"
配置解决了问题。
我正在使用Octave3.6.1_vs2010
版本,WinXP上的VS2010。
这是我测试的代码:
#include <iostream>
#include <octave/oct.h>
#include <octave/octave.h>
#include <octave/parse.h>
int main(int argc, char **argv)
{
// Init Octave interpreter
if (!octave_main(argc, argv, true)) {
error("Octave interpreter initialization failed");
}
// x = rand(10,1)
ColumnVector sz(2);
sz(0) = 10; sz(1) = 1;
octave_value_list in = octave_value(sz);
octave_value_list out = feval("rand", in, 1);
// print random numbers
if (!error_state && out.length () > 0) {
Matrix x( out(0).matrix_value() );
std::cout << "x = n" << x << std::endl;
}
return 0;
}
带输出:
x =
0.165897
0.0239711
0.957456
0.830028
0.859441
0.513797
0.870601
0.0643697
0.0605021
0.153486
我猜它实际上停止指向下一行,错误实际上在于这一行:
f_arg(0) = octave_value(NumRands);
您似乎试图从向量中获取一个值(哪个值?),然后将其分配给尚未定义为向量的向量的元素 0。
我真的不知道...我从来没有尝试过写这样的八度代码。 我只是想通过将代码转换为标准 matlab/octave 代码来解决这个问题,那行对我来说真的很奇怪......
相关文章:
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- 如何在C++(VS2010)中设置超时读取USB端口?
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- VS2010 C++ 调试托管 (C++/CLI) DLL
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- error LNK2019 ARuco and OpenCV VS2010 c++
- Octave c++ and VS2010