对 'myNamespace::MyClass::myFunc()' 的未定义引用

undefined reference to 'myNamespace::MyClass::myFunc()'

我在外部 c++ main 中从我的 test_dll.dll 调用函数时遇到问题。在eclipse上工作 cdt luna sr2 64, Windows 7. 使用MinGW工具链进行编译。

dll.cpp代码:

#include <iostream>
#include "MyClass.h"

namespace myNamespace {

MyClass::MyClass() :a(1) {
    std::cout << "MyClass():a(" << this->a << ")"<<std::endl;
}

MyClass::~MyClass() { }

void myFunc() {
    std::cout << "myFunc() has been called !" << std::endl;
}

}

它是在 eclipse 中用以下几行编译的:

g++ -O0 -g3 -Wall -c -fmessage-length=0 -o MyClass.o "..\MyClass.cpp" 
g++ -shared -o libtest_dll.dll MyClass.o 

我的主要代码如下:

#include <iostream>
#include "MyClass.h"

using namespace std;

int main() {
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    myNamespace::MyClass *instance = new myNamespace::MyClass;
    instance->myFunc();

    return 0;
}

它是用下面的

编译的
g++ "-IC:\Users\nxa02192\Desktop\MY_WORKSPACE\test_dll" "-includeC:\Users\nxa02192\Desktop\MY_WORKSPACE\test_dll\MyClass.h" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\test_main.o" "..\src\test_main.cpp"
g++ "-LC:\Users\nxa02192\Desktop\MY_WORKSPACE\test_dll\Debug" -o test_main.exe "src\test_main.o" -llibtest_dll
src\test_main.o: In function `main':
C:\Users\nxa02192\Desktop\MY_WORKSPACE\test_main\Debug/../src/test_main.cpp:20: undefined reference to `myNamespace::MyClass::myFunc()'
collect2.exe: error: ld returned 1 exit status

然而,我没有得到的是,如果我只是实例化 class,它将输出正确的 a=1 值,如构造函数中指定的那样。

我已经指定了编译器的包含路径以及链接器的库路径和文件,正如您在编译命令中看到的那样。有任何想法吗 ?谢谢!

改变

void myFunc() {
    std::cout << "myFunc() has been called !" << std::endl;
}

void MyClass::myFunc() {
    std::cout << "myFunc() has been called !" << std::endl;
}