【发布时间】:2016-04-20 08:25:18
【问题描述】:
所以我在我的主类中定义了一个函数指针,如下所示:
namespace Lab
{
namespace Math
{
namespace Port
{
void main()
{
typedef void(*objfunptr)(int, int, const double[], double[], double[], int);
objfunptr objfun= ObjectiveFunctions::ExampleObjFun;
// Till Here it compiles fine but after calling the function we have error
objfun(m, n, xPtr, fPtr, fjacPtr, td);
}
}
}
}
我收到以下错误:
Error 16 error LNK2001: unresolved external symbol "public: static void __cdecl Lab::Math::Port::ObjectiveFunctions::ExampleObjFun ...
我的 ObjectiveFunctions 源和标头是这样定义的:
标题:
namespace Lab
{
namespace Math
{
namespace Port
{
public class ObjectiveFunctions
{
public:
static void ObjectiveFunctions::ExampleObjFun(int m, int n, const double x[], double f[], double fjac[], int fjacp);
};
}
}
}
来源:
namespace Lab
{
namespace Math
{
namespace Port
{
static void ExampleObjFun(int m, int n, const double x[], double f[], double fjac[], int fjacp){
//Do whatever;
}
}
}
}
请注意,如果我在同一个文件中编写函数,这整个事情都会起作用,但是当我添加命名空间并将目标函数分离到另一个类中时,我会得到这个问题。
我在网上看了很多,他们说你必须声明和定义函数,这样编译器才不会发疯。但我确实声明并定义了!我不知道会是什么问题。
【问题讨论】:
标签: c++ managed-c++