关于Com和C/C++的交互问题 void Test() { Device_Init(); Device_Destroy(); }这是不可能的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但是这是客户需求,也是SDK的需求。客户甚至可能在DLLMain等函数中调用这个Device_Init/DeviceDestroy呢,这个还是最麻烦的,不过这个不是SDK的规定,可以协商.还请各位帮忙。 可以这样:Device_Init( int a ); // a=0, sdk, a=1, com SDK是接口规范,不是我定的,不能乱改的!不过我想只要能知道现有的Apartment模型就可以了,实在不行,可以使用强制方法来做.对于所有SDK函数都使用这样的宏:#define COM_MODEL_START {BOOL _bHasDepartment=FALSE;\ if(CoInitializeEx(NULL,COINIT_MULTITHREADED)\ ==RPC_E_CHANGED_MODE) _bHasDepartment =TRUE; #define COM_MODEL_END if(_bHasDepartment) CoUninitialize();} 一个例子:DLLEXPORT DEVICE_RESULT Device_Init(){ DEVICE_RESULT rv=DEVICE_OK; HRESULT hr; COM_MODEL_START //do something here COM_MODEL_END return rv;}但是这样做,对于DllMain的调用方法还是会有问题,看来这个问题只能和资方协商才能做到! UP!我们如何知道当前线程的Apartment模型? 一个点如何移动到另一个点 vs2008程序的部署 关于绘制图形填充 今天遇到个比较奇怪的问题...10038错误 请问如何将一个view中函数返回的数值传给其它的view? 出现的编译时的错误 怎样使CRebar Resizing , 不能拖动改变窗口大小。 自建dll一问 关于ATL中_Module.Init(NULL, NULL);和_Module.Term();的用法? 关于多线程中SOCKET编程的。 编译*.asm文件为*.exe文件需那些工具? 如何做VC的工程管理的功能??
但是这是客户需求,也是SDK的需求。
客户甚至可能在DLLMain等函数中调用这个Device_Init/DeviceDestroy呢,这个还是最麻烦的,不过这个不是SDK的规定,可以协商.还请各位帮忙。
Device_Init( int a ); // a=0, sdk, a=1, com
不过我想只要能知道现有的Apartment模型就可以了,实在不行,可以使用强制方法来做.
对于所有SDK函数都使用这样的宏:#define COM_MODEL_START {BOOL _bHasDepartment=FALSE;\
if(CoInitializeEx(NULL,COINIT_MULTITHREADED)\
==RPC_E_CHANGED_MODE) _bHasDepartment =TRUE;
#define COM_MODEL_END if(_bHasDepartment) CoUninitialize();}
一个例子:
DLLEXPORT DEVICE_RESULT Device_Init()
{
DEVICE_RESULT rv=DEVICE_OK;
HRESULT hr;
COM_MODEL_START
//do something here
COM_MODEL_END
return rv;
}但是这样做,对于DllMain的调用方法还是会有问题,看来这个问题只能和资方协商才能做到!
我们如何知道当前线程的Apartment模型?