COM 初始化的问题

ADO连接失败,Com初始化 ADO数据库连接,初始com 阅读详情

COMWrapper g_COMWrapper; 

 

// dll entry point
extern "C" BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
      )
{
    return TRUE;
}

 

extern "C" void Test()

{

   if( g_COMWrapper.GetPtr()->GetInterfacePtr() != NULL)

   {

     //TODO

   }

}

 

这段代码是一个com客户端,是一个DLL,COMWrapper 是一个class,封装了一个COM指针,理论上这样的写法没有错误,但是当一个exe程序使用这个dll的时候,却不能加载这个DLL,在CreateInstance函数中死掉了

 

如果修改成下面这样,就可以解决问题了 (把COMWrapper 作为local变量就可以了)

 

  1. COMWrapper g_COMWrapper; 
  2. // dll entry point
  3. extern "C" BOOL APIENTRY DllMain( HMODULE hModule,
  4.                        DWORD  ul_reason_for_call,
  5.                        LPVOID lpReserved
  6.       )
  7. {
  8.     return TRUE;
  9. }
  10. extern "C" void Test()
  11. {
  12.    COMWrapper _COMWrapper; 
  13.    if( _COMWrapper.GetPtr()->GetInterfacePtr() != NULL)
  14.    {
  15.      //TODO
  16.    }
  17. }

 

VC下MFC,调用Com类型库遇到的问题的解决 VC建立一个对话框程序,引入Com类型库。Vs2010环境。首先,选项目打开类向导。选择“添加类”后的下拉小三角,里面有添加类型库里的MFC类,选择相应的Com类型库就生成了对应的MFC类,在对话框类中直接调用生成的类。 CComLib Com1;       Com1.XXX( 阅读详情

相关推荐

ffmpeg播放器开发时mmdevice audio output error: cannot initialize COM (error 0x80010106)问题解决

通过打印线程号,发现我确实是在线程里有对UI的操作,具体的操作代码在m_videoForm这个成员的onFrame方法里,这是一个窗口,我在这个函数里把窗口大小改成帧的大小,在回调函数里去操作是在线程里的。COM(Component Object Model)是一种由微软开发的二进制接口标准,旨在支持软件组件之间的互操作性。使用Qt的信号槽机制,通过信号将回调上来的数据发送到主线程,在主线程去操作UI。单线程单元(STA):每个 COM 对象只能在创建它的线程中被调用。在网上查了以后发现问题分为两部分。

qp18235904147的博客 1038

COM组件初始化时的错误

使用环境: Windows XP、VC++ 出现错误: 在用ADO组件进行数据库操作时,由于是COM组件,需要初始化COM组件。 使用函数:AfxOleInit() 在编译时出现如下错误: error C2065: 'AfxOleInit' : undeclared identifier 错误分析: 看到很多使用AfxOleInit()的场合都是MFC情景下,因此需要包含一些afx

白永辉的专栏 4555

C++多线程中使用COM组件时的初始化问题

CoInitialize、CoInitializeEx都是windows的API,主要是告诉windows以什么方式为程序创建COM对象,原因是程序调用com库函数(除CoGetMalloc和内存分配函数)之前必须初始化com库。 有哪些方式呢?单线程和多线程。 CoInitialize指明以单线程方式创建。 CoInitializeEx可以指定CO

dvlinker的技术专栏 9108

COM包装(COM Wrappers)

为了实现传统的COM程序与.NET程序之间的相互调用,.NET提供了两个包装类:运行时可调用包装(runtime callable wrapper,RCW)和COM可调用包装(COM callable wrapper,CCW)。每当一个.NET客户程序调用一个COM对象的方法时就会创建一个RCW对象;相反,每当一个COM客户程序调用一个.net对象的方法时就会创建一个CCW对象...

weixin_30689307的博客 329

今天论坛中遇到的两则问题说明(COM库的初始化问题以及托盘图标弹出菜单不消失问题)

COM库初始化 托盘图标菜单不消失 MSDN

dvlinker的技术专栏 2646

UIAComWrapper:UI自动化COM到.NET适配器使使用新的Windows自动化API 3.0 COM界面(具有改进的可靠性和性能)成为可能,同时仍使用与UI自动化早期版本相同的System.Windows.Automation类。

UIAComWrapper UI自动化COM到.NET适配器使使用新的Windows自动化API 3.0 COM界面(具有改进的可靠性和性能)成为可能,同时仍使用与UI自动化早期版本相同的System.Windows.Automation类。 变化 v1.1.0.14 使用添加了源索引。 通过进入VS中的UIAComWrapper代码,可以自动从GitHub下载正确的源代码,从而使问题调试更加容易。

C#中COM操作(一)---实例化

     用C#做WinForm程序,时间长了难免会遇到和COM组件打交道的地方,用什么方式创建COM对象也成了我们必须面对的一个问题.据我所知道的创建COM对象的方法一共有以下几种:1 使用.NET包装COM组件    这是最简单的就是导入COM组件所在的DLL,让IDE生成.NET一个IL包装加到项目中,这样原来COM里面所有实现了IDispatch,Dual的COM类型及其相关类

bindsang的专栏 1万+

MBIST --- PATR1.Memorybist测试原理

mem bist作为现在design设计中不可或缺的DFT设计内容,越发重要。本章节主要介绍mem bist组成部分,测试的原理以及注意事项。

sinat_27691203的博客 1万+

1.8安装相机SDK及测试

使用大华相机和海康相机,配置环境

明确目标,不畏艰难,持之以恒 1万+

HP MSA 2050磁盘阵列配置步骤

一、盘阵与服务器直接连接 1.1 单控制器配置:一台服务器/ 一个 HBA/ 单路径 1.2 双控制器配置:两台服务器/ 每台服务器一个 HBA/ 双路径 二、通过交换机(一般光纤交换机) 2.1 双控制器配置:两台服务器/ 两台交换机 三、配置MSA2050 3.1在完成硬件安装后,可以访问控制器模块的基于 Web 的管理界面 SMU (存储 管理实用程序),以便监视和管理此存储系统。 首先...

jw5493的博客 1万+

保姆级教程:在Windows 10上为QT5.15.2配置Android开发环境(含SDK/NDK/JDK避坑指南)

本文提供了一份详细的Windows 10环境下为QT5.15.2配置Android开发环境的保姆级教程,涵盖SDK、NDK、JDK的安装与配置,以及常见问题的避坑指南。通过优化安装流程、解决Gradle下载慢等痛点,帮助开发者快速搭建稳定的编译环境,并提供了模拟器配置和调试技巧,确保开发效率。

weixin_30919571的博客 526

QT在子线程中使用QAxWidget需要初始化COM的问题

最近碰到一个在子线程中使用QAxWidget不成功的问题,问题显示如下: CoCreateInstance failure (尚未调用 CoInitialize。) QAxBase::setControl: requested control Excel.Application could not be instantiated QAxBase::dynamicCallHelper: Objec

a1069962325的博客 1万+

how2heap 深入学习(1)

how2heap glibc 2.23学习

CoLin的pwn小屋 3179

初始化COM时候的问题

using namespace MSXML2; void CTest_XMLDlg::OnGenerate()  { // TODO: Add your control notification handler code here        ::CoInitialize(NULL); //初始化COM UpdateData(TRUE); MSXML2::IXMLDOMDocum

jiqi6614的博客 421

FPGA/IC 秋招笔试/面试题总结(目录)

FPGA/IC 秋招笔试/面试题总结-目录介绍 文章目录FPGA/IC 秋招笔试/面试题总结-目录介绍一、FPGA内部资源1. 什么是FPGA2.FPGA内部资源二、同步时钟、同步/异步电路1.同步时钟2.同步/异步电路三、同步复位/异步复位1.同步复位2. 异步复位3. 异步复位同步释放四、同步FIFO/异步FIFO1.同步FIFO2.异步FIFO五、FIFO最小深度计算1.FIFO最小深度2.示例分析六、逻辑电平1.TTL电平标准2.LVTTL电平标准3.CMOS电平标准4.LVCOMS电平标准5.RS

Crazzy_M的博客 2万+

万字长文介绍ARINC 653,以及在综合模块化航空电子设备(IMA)中的作用

ARINC 653 在综合模块化航空电子设备(IMA)的发展进程中扮演着极为关键的角色。从行业应用的实际情况来看,空客 A380 和波音 787 等先进飞机的航电系统套件充分体现了行业对 IMA 的高度重视和积极投入。在 IMA 架构下,核心软件具备强大的能力,能够支持多个航空电子应用程序的同时运行。这些应用程序可以并行开发,并高效地部署在同一个计算平台上,极大地提高了开发效率和系统集成度。ARINC 653 的出现为航空电子行业创造了一个充满活力和竞争力的商业环境。

2956

多线程中对COM的初始化CoInitialize应该注意的问题

使用COM组件时,通常的做法是在main函数的最前面调用CoInitialize(NULL);,最后面调用CoUninitialize(); 今天遇到一个问题是在线程中使用COM组件失败了,我就怀疑线程中也需要初始化COM。也就是说:COM的初始化是以线程为单位的。 搜索了下,这篇文章说的比较详细:http://blog.youkuaiyun.com/zhengxh/article/details/697

https://github.com/JelinYao 1万+

Windows11配置WSL2支持代理上网

说起来本来这个功能我也不需要的,只是最近突然有个需求就顺便研究了下,WSL2默认的网络方式是NAT,即WSL2的网卡本身是虚拟网卡,通过以太网或WIFI的地址转换来上互联网,我试了下是不能直接走代理的,最近比较忙没具体研究,但是我用另一种方式实现了,下面介绍给需要的人。注意:这个方法只能是WIndows11系统,WIndows10系统上的WSL2缺少了一项功能导致不可用。1、方法总体没什么难度,NAT方式暂时没研究透,后续有时间再研究2、WIndows10系统不支持mirrored,暂时需要另辟蹊径。

jiexijihe945的博客 9589

MFC---摄像头检索以及com组件初始化问题

通常,如果一个应用程序或线程需要与UI交互或依赖于某些只能在STA模型中运行的COM组件,那么它会使用STA模型。相反,如果性能是主要关注点,并且对象是线程安全的,那么可以选择MTA模型。封装的dll中有该函数,mfc,自己测试时正常,其他人使用时却异常,分析原因后是自己使用时是在主线程中调用,而其他人使用时是在其他线程中调用。如果在后台线程中执行COM操作而没有显式初始化COM,那么这些操作可能会失败。同样,如果在STA线程中创建了一个对象,而此对象只在MTA中有效,那么也可能会遇到问题。

破晓的专栏 414

华为OD机试 - 跳房子I(Java 双机位A卷 100分)

可行的两步组合有 [1, 2] (索引和 0+3=3)、[1, 2] (索引和 0+4=4)、[4, 2] (索引和 1+3=4)、[4, 2] (索引和 1+4=5)、[5, 2] (索引和 2+3=5)、[5, 2] (索引和 2+4=6)。此样例有多种组合满足两回合跳到最后,譬如[-1,9], [2,6],其中[-1,9]的索引和为0+3=3, [2,6]的索引和为1+4=5, 所以索引和最小的步数组合为[-1,9].[3, 2] 和 [1, 4] 都满足和等于 5,且索引和均为 3。

学Java,找哪吒 4508

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

COM组件初始化

用DirectShow到了枚举设备,放在程序开始出,没有任何输出结果,查代码发现用的:     HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC, IID_ICreateDevEnum,  (void **) &p->pICreateDevEnum);  返回值居然错误,才恍然大悟,原来是没有

发展是曲折的但也是前进的 1989

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

windows DLL中使用COM的注意事项

windows的DLL开发是有需要注意的地方的,不然会造成一些问题。由于我最近的使用不当,又造成了问题,虽然之前有写过一篇笔记, http://www.cnblogs.com/foohack/p/6645919.html 文章指出了在DLL中不能调用CoInitilazie 等初始化COM库的API。但是自己还是没有深刻理解。因为之前的项目只有一个线程,也就是主线程,主线程加载了一个DLL插件,D...

weixin_34292924的博客 182

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

日常问题——初始化Hive仓库报错com.google.common.base.Preconditions.checkArgument

问题描述: 初始化Hive仓库报错Exception in thread “main” java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V 解决方案(过程): com.google.common.base.Preconditions.checkArgument 这是因为hive内依赖的guava.jar和hadoop内的版

栗筝i的博客 1万+

多线程+Webservice分布式编程时需要注意的COM问题

多线程+Webservice分布式编程时需要注意的COM问题

敦格 7795

在vc中是使用ado连接数据库时,没有初始化COM导致错误

今天在一个项目中在vc中使用ado方式连接sql server时,由于没有初始化COM,少写了一个语句::CoInitialize(NULL);,程序一直出现Runtime Error ,浪费了2个小时才找到错误,着实不该。

cool_killer的专栏 961
上一篇: WM_COPYDATA 进程间传递参数的问题
下一篇: .NET调用Java方法时出现的一个错误及其原因
sinsel
博客等级 码龄20年 3粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值