在class外面进行实例化声明:
MyClass* MyClass::m_Instance;-------------------------------------------------------
广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711
MyClass* MyClass::m_Instance;-------------------------------------------------------
广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711
解决方案 »
- 哪位大牛了解BCGPGridCtrl吗
- 分割窗口的响应onChar问题
- 这样的两个项目,各自开价多少合适?
- 已经得到鼠标图象,如漏斗等,如何根据图象得到鼠标状态,然后设置当前鼠标状态?谢谢
- 想在SDK的程序里打印html网页(50分)
- 老大,如何获取IE的版本号啊!请帮我啊!
- 有做视频的吗?用DirectDraw显示YUV时,出现马赛克和锯齿的情况?
- vc 2个字符串能否用逻辑运算符&&
- 这是什麽错???-------初学者提问
- MFC通过AFXbeginthread()函数新建的工作线程中能使用定时器么?
- 在VC.NET2005中DataGrid控件的列宽设置!!
- 急!RELEASE版按工具条上的按纽为何报错?
问题依旧.
========================================动态链接库中类包含静态成员变量
class __declspec(dllexport) MyClass
{
...
protected:
static MyClass* m_Instance
...
}
在cpp文件中对静态成员变量实例化声明
MyClass* MyClass::m_Instance = NULL;整个动态库编译正常====================================================在外部程序中调用这个Dll的MyClass类.
MyClass oneClass;编译外部程序的时候,出现链接错误:
error LNK2001: unresolved external symbol "protected: static class MyClass* MyClass::m_Instance " ......
请问这该如何解决?
看样子像是编译器没找到实体
你在外部重新定义一个实体试试看 - -#
-------------------------------------------------------
广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711
这是由于导出类的修饰错误,对于dll本身来讲,修饰应该是__declspec(dllexport),而对于调用者来讲,应该是__declspec(dllimport)。而为了正确的编译修饰,可以声明如下:
#ifdef MY_DLL_EXPORT
#define _DLL_EXPORT_ __declspec(dllexport)
#else
#define _DLL_EXPORT_ __declspec(dllimport)
#endif
将MY_DLL_EXPORT加到dll 工程的预编译定义中。
现在你可以使用_DLL_EXPORT_宏来修饰你任何想导出的类或函数了。
如果再搞不定,你可以将你的代码发给[email protected],我将会及时帮你搞定。祝你好运!
这是由于导出类的修饰错误,对于dll本身来讲,修饰应该是__declspec(dllexport),而对于调用者来讲,应该是__declspec(dllimport)。而为了正确的编译修饰,可以声明如下:
#ifdef MY_DLL_EXPORT
#define _DLL_EXPORT_ __declspec(dllexport)
#else
#define _DLL_EXPORT_ __declspec(dllimport)
#endif
将MY_DLL_EXPORT加到dll 工程的预编译定义中。
现在你可以使用_DLL_EXPORT_宏来修饰你任何想导出的类或函数了。
如果再搞不定,你可以将你的代码发给[email protected],我将会及时帮你搞定。祝你好运!
楼主的问题恐怕和编译器有一定关系。
VS2005下,如果是const静态成员变量,直接在类声明里初始化。然后导出类即可。
非静态的俺就不知道了,还望高手指点。
感谢johnxt.
但使用过程中可能会出现崩溃现象,其实你定义一个全局变量,头
文件中extern一下就可以了,与静态变量同样的效果