MFC调用dll,该如何处理

MFC调用dll
RT
    我需要用C++封装一个播放器(dll),在需要用的地方单独去调用。现在出现几个问题:

1、如果我把播放器作为应用程序来实现,这里没有问题;而且在这个工程里面新建窗口,再调用播放器窗口,也没有问题
2、如果将播放器封装为dll,新建一个项目,在这个项目中调用dll,我是通过接口来实现的

接口如下:

extern "C" __declspec(dllexport) void InitCTMPlayerDlg(HWND hwnd);//创建
extern "C" __declspec(dllexport) CDialogEx* GetDialog();//得到窗口
extern "C" __declspec(dllexport) BOOL ReleaseTMPlayerDlg();//释放窗口


这段代码,在当前项目中测试没有问题。(在别的地方调用就有问题)


3、在新项目中是这么调用的


typedef BOOL(*PFUN_WDWND_INIT)(CWnd *pParent);
typedef void(*PFUN_WDWND_RELEASE)();
typedef CDialogEx* (*PFUN_WDWND_GETWND)();

//下面是hLib装载正常
PFUN_WDWND_INIT pInitFunc = (PFUN_WDWND_INIT)GetProcAddress(hLib, "InitCTMPlayerDlg");
PFUN_WDWND_GETWND pGetWndFunc = (PFUN_WDWND_GETWND)GetProcAddress(hLib, "GetDialog");
PFUN_WDWND_RELEASE pReleaseFunc = (PFUN_WDWND_RELEASE)GetProcAddress(hLib, "ReleaseTMPlayerDlg");


if (!pInitFunc(this))//运行到这里的时候就出问题了



现在很郁闷,网上查了很多资料,都不知道怎么处理,发个帖子,望高手给予答复,多谢。

备注:如果不作为dll来使用的话,这个播放器所在项目运行均没有问题,我在想肯定是调用接口的时候哪里出现问题。
因为分不多,见谅了,本来就没有几分。
------解决思路----------------------
这应该是DLL的资源问题,看你这个调用好像是要初始化一个Dlg,应该是把对话框的资源文件打进动态库里了,你搜一下相关的资料吧,我很久以前碰到过,具体怎么弄倒是忘了,就是调用个什么api把另一个动态库的资源加载过来
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

把dll工程设置为启动项目,然后f5调试,看堆栈看哪个地方挂掉了



这运行都运行不了的。。。


运行不了我能说么 你这么猜还不如自己debug来的快MFC调用dll,该如何处理


哥,你没明白的我的意思,dll工程如果设置为exe这个运行是没问题的,我的问题我定位到了在dll工程的DoDataExchange上出问题了,是不是资源冲突了。。。

哎,你这个就是我上头说的问题啊,再给你个提示吧,查查
AFX_MANAGE_STATE(AfxGetStaticModuleState())
这条语句的意思,另外好好看看下头的文章
http://wenku.baidu.com/view/18f6a0777fd5360cba1adb58.html