c++模版类静态成员引起的怪异问题(跟DLL导出相关),高分相送啊!
hi 各位论坛大小牛:
我今天遇到一个问题,能力有限,解决不了,望各位相助,再次谢谢啦(并高分相送)!
问题描述:
在一个新建的a.DLL工程中,谢了个模版类,头文件内容如下:
//a.h
此DLL工程中,还有另外一个源码文件,test.h, test.cpp 内含有一个简单的导出函数作为测试:
代码如下:
以上都是工程DLL中的源码文件,为了测试我又新建了一个Application Console 工程测试,测试代码如下:
引入DLL关联,编译,运行后,测试结果出乎我的意料:
PrintTest()打印的地址与后面打印语句 打印出两个不同的对象地址。
奇怪了! 急等帮忙! 谢了!
我今天遇到一个问题,能力有限,解决不了,望各位相助,再次谢谢啦(并高分相送)!
问题描述:
在一个新建的a.DLL工程中,谢了个模版类,头文件内容如下:
//a.h
#pragma once
template <class T>
class Singleton
{
public:
typedef SingleTon<T> Myself;
static MySelf* GetInstance(){
if(instance_ == NULL){
instance_ = new MySelf();
}
return instance_;
}
private:
static MySelf* instance_;
}
template <class T>
SingleTon<T>* SingleTon<T>::instance_ = NULL;
typedef SingleTon<int> IntSingleTon;
此DLL工程中,还有另外一个源码文件,test.h, test.cpp 内含有一个简单的导出函数作为测试:
代码如下:
//test.h
#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif
TEST_API void PrintTest();
#include "test.h"
#include <stdio.h>
#include "a.h"
TEST_API void PrintTest()
{
printf("IntSington Addr: %p\r\n", IntSingleTon::GetInstance() );
}
以上都是工程DLL中的源码文件,为了测试我又新建了一个Application Console 工程测试,测试代码如下:
#include <stdio.h>
#include "test.h"
int main()
{
PrintTest();
printf("In Exe IntSingleTon Addr:%p\r\n", IntSingleTon::GetInstance() );
return 0;
}
引入DLL关联,编译,运行后,测试结果出乎我的意料:
PrintTest()打印的地址与后面打印语句 打印出两个不同的对象地址。
奇怪了! 急等帮忙! 谢了!
...全文
相关推荐
C++版通讯录管理系统的设计与实现
这是本人大二下学期课程设计的选题,有添加,删除,修改,查询,显示等功能,一些输入怪异的东东也已经排除,应该不错,而且容易理解,对大家应该会有很大帮助!
界面怪异漂亮 vc制作不规则窗体界面
界面怪异漂亮,vc制作不规则窗体界面"这个主题聚焦于使用Visual C++(简称VC)来创建独特、视觉效果强烈的用户界面。
游戏引擎
这将与密切相关。目标学习图形学习cpp开发我必须管理内存的环境中的代码建立一个怪异的游戏引擎:DDD 玩得开心入门通过运行git
信任:Rust + devkitPro(libnx)+ Windows10。用于Rust中Nintendo Switch自制软件的简单项目。 (加上我测试过的怪异东西)
怪异测试:描述中提到的“我测试过的怪异东西”可能指的是开发者在项目过程中尝试的非典型功能或不寻常的实现方法。这可能涉及到错误修复、性能优化或者对Switch硬件特性的探索。
怪异字符串转换
An int type variable always occupy 4 bytes consecutively, so is an array of 4 char type elements. Wr


