C++ 初学者处理八度音阶和mex问题

C++ 初学者处理八度音阶和mex问题,c++,namespaces,octave,mex,C++,Namespaces,Octave,Mex,我是一名经验丰富的C/C++开发人员,但在处理倍频程中的mex时,我非常生疏。我肯定我遗漏了一些基本的东西,但我找不到它是什么 这些是我的文件: myhello.cpp test.cpp test.h 以下是文件的内容 (myhello.cpp): (测试h) (test.cpp) #包括“test.h” #包括 使用名称空间std; 使用名称空间测试; void testMethod() { cout除非我在命名空间测试中定义void testMethod(),否则我甚至无法在V

我是一名经验丰富的C/C++开发人员,但在处理倍频程中的mex时,我非常生疏。我肯定我遗漏了一些基本的东西,但我找不到它是什么

这些是我的文件:

myhello.cpp   
test.cpp   
test.h
以下是文件的内容

(myhello.cpp):

(测试h)

(test.cpp)

#包括“test.h”
#包括
使用名称空间std;
使用名称空间测试;
void testMethod()
{
cout除非我在
命名空间测试中定义
void testMethod()
,否则我甚至无法在VS2013中编译(实际上是链接)

//test.cpp
#include "test.h"
#include <iostream>

using namespace std;

namespace test
{
    void testMethod()
    {
            cout << "this works." << endl;
    }
}

尝试使用
-v
查看是否还有其他线索。此外,这是一个很长的尝试,但尝试将
#包括“mex.h”
放在第一位。这就像它认为
testMethod
是外部的…或动态加载的一样。等等,
不应该使testMethod()无效吗
是否在
命名空间测试中的test.CPP中定义?@chappjc我在代码中遇到了一些外来的奇怪错误(我通常在Microsoft Visual Studio中工作),但为了让mex进行编译,我必须在test.cpp文件的开头包含名称空间,然后在后面定义函数。好吧,这正是我最初做的,但要么是出现了奇怪的语法错误,要么是mex没有接受它;它一直在抱怨另一个问题……我现在不在,但稍后会给出详细信息.FWIW,我最近下载的其他一些代码一直在与这个完全相同的类似链接器的错误作斗争。这就是我创建这个简单程序的原因。@Ben OK,但如果不在测试命名空间中定义它,将有未解析的符号。我在生成时获取它们,您在运行时获取它们。但不确定为什么。程序的输出是正确的。这也是我的理解。我会再试一次。也许我只是做了一些愚蠢的事情?我在VIM中做这件事,所以我可能已经习惯了intellisense和VS的红色曲线:)我假设,自从它编译和链接以来,它一直在工作……也许mex的工作方式不同。@Ben我不会怪你的--如果没有intellisense提供的命令完成功能,我几乎无法编程。顺便说一句,
stdout
通常不是MATLAB命令提示符,因此
cout
可能不可见。嗯……我猜我脸上有鸡蛋。我做了我以前认为我用代码做的事情(如上面所示),这一次成功了。我之前尝试使用的代码可能也有同样的怪癖(我对这段代码进行了建模,试图分离出没有编译的代码)。我想应该感谢您。
namespace test
{
        void testMethod();
}
#include "test.h"
#include <iostream>

using namespace std;
using namespace test;

void testMethod()
{
        cout << "this works." << endl;
}
//test.cpp
#include "test.h"
#include <iostream>

using namespace std;

namespace test
{
    void testMethod()
    {
            cout << "this works." << endl;
    }
}
>> myhello
Hello, World!
I have 0 inputs and 0 outputs