请问一个关于dll中类的静态成员变量的有关问题
请教一个关于dll中类的静态成员变量的问题.
比如这么一个dll:
在头文件中:
class __declspec(dllexport) Test
{
public:
static const float x;
}
在cpp文件中:
const float Test::x = 1.0f;
这样写dll是编译成功了的.但我另外一个exe调用的时候缺出了问题:
#include "test.h "
#include <iostream>
#pragma comment(lib, "test.lib ")
using namespace std;
int main()
{
cout < < Test::x;
return 0;
}
却老是报告连接错误.
我想是不是因为静态成员是作为常量像内联函数一样要内嵌到exe当中.但是我把实现放到头文件中又会提示我说重复定义.
怎么办?
------解决方案--------------------
静态成员需要单独导出
__declspec(dllexport) const float Test::x = 1.0f;
------解决方案--------------------
错误原因是没有export。不过好像静态成员没法export...会报2720错
------解决方案--------------------
搞了几下都不对。
照说应该是头文件中extern一下。
不过你为什么要export一个static的成员变量呢?失去了封装的意义...
如果一定要export,搞成全局的就行了呀!
比如这么一个dll:
在头文件中:
class __declspec(dllexport) Test
{
public:
static const float x;
}
在cpp文件中:
const float Test::x = 1.0f;
这样写dll是编译成功了的.但我另外一个exe调用的时候缺出了问题:
#include "test.h "
#include <iostream>
#pragma comment(lib, "test.lib ")
using namespace std;
int main()
{
cout < < Test::x;
return 0;
}
却老是报告连接错误.
我想是不是因为静态成员是作为常量像内联函数一样要内嵌到exe当中.但是我把实现放到头文件中又会提示我说重复定义.
怎么办?
------解决方案--------------------
静态成员需要单独导出
__declspec(dllexport) const float Test::x = 1.0f;
------解决方案--------------------
错误原因是没有export。不过好像静态成员没法export...会报2720错
------解决方案--------------------
搞了几下都不对。
照说应该是头文件中extern一下。
不过你为什么要export一个static的成员变量呢?失去了封装的意义...
如果一定要export,搞成全局的就行了呀!