在 msvc 2010 中使用 Octave
Use Octave in msvc 2010
我在MSVC 2010中使用Octave。首先,我在此链接下载了Octave最新版本。安装后,我尝试运行以下简单代码:
#include <iostream>
#include<octave-3.6.4octaveoct.h>
#include<octave-3.6.4octaveconfig.h>
#include<octave-3.6.4octaveoctave.h>
using namespace std;
int main (void)
{
std::cout << "Hello Octave world!n";
system("PAUSE");
return 0;
}
请注意,我也将这些链接添加到我的项目中:
- C:\软件\八度-3.6.4\包括\八
- 度-3.6.4\八度--->包括目录,
- C:\Software\Octave-3.6.4\include--->包括目录
- C:\Software\Octave-3.6.4\lib--->Lib. Dir.
- C:\Software\Octave-3.6.4\lib\octave\3.6.4--->Lib Dir.
- 我还在附加公司目录中添加了 1 和 2!!
- C:\Software\Octave-3.6.4\lib\octave\3.6.4--->附加 lib. dir.
首先,我收到此错误,当此文件在我的程序文件(x86)中时,它无法在程序文件中找到math.h。因此,我将其更改为:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\math.h,它解决了此错误。但是,现在我收到此错误:
error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall octave_value::~octave_value(void)" (__imp_??1octave_value@@QAE@XZ) referenced in function "public: void * __thiscall octave_value::`vector deleting destructor'(unsigned int)" (??_Eoctave_value@@QAEPAXI@Z)
将库路径添加到项目中是不够的。
您必须将库名称(包括.lib
)添加到链接器/输入选项卡中的"其他依赖项"中。
编辑
要验证搜索了哪个库,您可以启用链接器/常规/显示进度选项。然后,您可以在构建输出中看到符号搜索中实际使用的库。
编辑
示例代码不显示octave_value
实例数组的任何实例。因此,您需要使用所显示的代码与任何库链接,这有点令人惊讶。但无论如何,您希望解决这些外部问题。
如果没有其他资源(手动等),则应检测octave_value
类的实现位置。这可以是静态库或 DLL。
您可以使用 DLL 上的dumpbin /exports
来检测 DLL 实现。在这种情况下,您需要相应的导入库。LIB 应具有与 DLL 相同的基本名称。验证是否已添加该依赖项,以及链接器如何在此库中搜索符号。
__imp_??1octave_value@@QAE@XZ
符号的名称指示它应位于 DLL 中。但是由于您有问题,您可能也想搜索 LIB。您可以使用 dumpbin /symbols
检测 LIB 实现。在这种情况下,您必须直接添加 LIB。再次使用生成输出进行验证。
垃圾箱输出可能会非常冗长。应使用findstr
来限制输出或将输出重定向到文件,然后使用所选编辑器搜索符号。
搜索ocatave_value
。如果发现构造函数和析构函数的不同修饰,则可能错过了设置选项。预处理器目录可用于定义库的使用方式。例如,如果您发现没有__imp_
前缀的octave_value::octave_value
,那么您不小心为 DLL 版本编译了该类是在静态库中实现的。在这种情况下,请阅读手册并在八度邮件列表论坛或其他什么地方提问。
- MSVC多行宏编译器错误
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- MSVC是否支持C++11样式的属性而不是__declspec
- MSVC将仅移动结构参数解释为指针
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 有与__builtin__FUNCTION()等效的MSVC吗
- 为什么 gcc 编译这个而 msvc 没有
- 看起来is_nothrow_constructible_v()在MSVC中被破坏了,我错了吗
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- MSVC 忽略 [[maybe_unused]] 的功能?
- std::vector::p ush_back() 不会在 MSVC 上编译具有已删除移动构造函数的对象
- MSVC中的宏观扩展问题
- "Ill-defined for-loop - loop executes infinitely" (MSVC C6295)
- __CHAR_BIT__宏是否为 MSVC 编译器预定义?
- 不正确的操作数类型 MSVC
- 使用 MSVC 调试类型
- CRTP 中的复制赋值运算符 - gcc vs clang 和 msvc
- MSVC(Visual C++)是否有等效的-weffc ++?
- 命名空间范围内的外部 - GCC vs clang vs msvc
- 在 msvc 2010 中使用 Octave