调用函数-简单的com组件调用,用类厂的方式,调试到ix->ifun()内存报错。。

问题描述

简单的com组件调用,用类厂的方式,调试到ix->ifun()内存报错。。

#include
#include "ComExp1.h"
#include "ComExp1_i.c"

int main(int argc, char* argv[])
{
IUnknown *pUnk=NULL;
ICompute *pObject;
//ICompute * pICompute; //定义一个ICompute 的接口指针;
HRESULT hResult;

//初始化COM库
if (CoInitialize(NULL) != S_OK)
{
    printf("Initialize COM library failed!n");
    return -1;
}

GUID comExp1CLSID; //定义一个GUID对象--clsID

//  通过调用::CLSIDFromProgID将GUID转换成CLSID;
hResult=::CLSIDFromProgID(L"ComExp1.Compute",&comExp1CLSID);
if(hResult != S_OK)
{
    printf("Can't find the ComExp1 CLSID!n");
    return -2;
}

// IClassFactory classFactory;
hResult = CoGetClassObject(comExp1CLSID,CLSCTX_INPROC_SERVER,NULL,
IID_IUnknown,(void *
)&pUnk);
if(FALSE(hResult))
{
printf("error!n");
}
pUnk->QueryInterface(IID_ICompute,(void**)&pObject);
pUnk->Release();
long k;
long *l=&k;
printf("ok!n");
pObject->Add(6,2,l);//调试到这里内存报错。。编译是没错的
printf("6 + 2 = %ldn",*l);
printf("Compute over...n");
pObject->Release();
CoUninitialize();//释放COM库
return 0;

}

时间: 2025-01-27 06:11:40

调用函数-简单的com组件调用,用类厂的方式,调试到ix->ifun()内存报错。。的相关文章

调用函数-C++/C#的函数内嵌问题

问题描述 C++/C#的函数内嵌问题 int a(){ int c=1; int d=2; int e=3; return c+d+e;}int b(){ int c=a(); int d=a(); int e=a();}上面是简单例子 函数a里有很多对象,函数b里也有很多对象与a重复,假设这种情况不可避免,对象有很多修改很不方便.现在我想调用函数b,却发现调用函数b必须调用函数a,于是我想把函数a整合到函数b里面去,这样我以后只需要调用一个函数就行了因为如果我调用函数b时的函数b需要调用很多个

VS2010在WIN7下安装报错“下列组件安装失败”如何解决

  WIN7旗舰版系统安装VS2010旗舰版,安装完成后报错.左边显示下列组件安装失败,如上图所示.右边提示,安装已完成,但在安装可选组件时报告了失败情况.偶尔其他电脑安装,又没有报错.点击完成后,进入VS又报错,未能正确加载...包,此问题可能是由配置变更或安装另一个扩展导致的.可以在命令行中使用/log参数来运行应用程序,然后检查文件.   解决办法:不懂什么参数设置,我们直接重新配置.CMD进入程序目录,输入配置命令.如下图.   再次打开VS2010 错误提示消失,问题解决!

com组件-Com组件调用C++回调函数,如何传参

问题描述 Com组件调用C++回调函数,如何传参 一.com组件接口函数的实现: 1.成员 private: //回调函数指针 CComPtr m_pChangeTempCallbackFun;//更换模板回调函数 2.函数 bool CDllHelper::SetCallBackFun(VARIANT vaJsFun) { if(vaJsFun.vt != VT_DISPATCH) { return false; } m_pChangeTempCallbackFun = vaJsFun.pdi

vc++-新人求帮助:VC6 调用delphi编写的com组件函数 报错

问题描述 新人求帮助:VC6 调用delphi编写的com组件函数 报错 代码: IElectric *ptr = NULL; CLSID clsid; HRESULT hr = CLSIDFromString((LPOLESTR)L"{18F86FFB-158B-42D6-9203-C4197A4E76FE}",&clsid); hr = CoInitialize(0); if(!SUCCEEDED(hr)) { int nCode = GetLastError(); } h

js函数简单调用举例说明

我们用一个按钮调用一下这个函数:将按钮的点击事件指向这个方法 <input type="button" value="click me" onclick="hanshu()"> 现在我在此方法中再写一个方法 我们在这个方法中将body的点击事件指向了一个新的方法,匿名方法.然后弹出click body function addclick() {    // 这样不能实现把body的单击事件指给新的方法, 因为body不能访问在函数体里

PowerShell中简单的自定义函数和调用函数例子_PowerShell

在PowerShell中是否有函数?PowerShell是否可以自定义函数?PowerShell中如何自定义函数? 在PowerShell中,我们可以使用函数(function)来简化编程开发.在PowerShell中使用function这个关键词来标识一个函数.一个自定义的函数,由function关键词开始,然后用一对大括号来包括起整个函数体的内容. 我们先来看一下简单的PowerShell函数: 复制代码 代码如下: function Test-Function {     Write-Ho

thinkPHP简单调用函数与类库的方法

本文实例讲述了thinkPHP调用函数与类库的方法.分享给大家供大家参考,具体如下: 手册上说的很冗余,没看懂,下面简单的讲一下具体用法. 函数调用: lib公共函数库叫 common.php App/common/common.php 分组模块下的公共函数库叫 function.php App/Modules/Admin/common/function.php 类库调用: class IndexAction extends Action{ public function index(){ //

JavaScript:new 一个函数和直接调用函数的区别分析

或许许多人对此不以为然,在函数前加 new 关键字,不就是实例化一个对象吗?但事情显然没那么简单   复制代码 代码如下: function Test() { this.name = 'Test'; return function() { return true; } } var test = new Test(); // 这里的 test 是什么? 是一个 Test 对象吗?错!这里 test 是一个函数--Test 中返回的 function() { return true; }.这时,ne

Javascript调用函数方法的几种方式介绍

 这篇文章主要介绍了Javascript调用函数方法的几种方式介绍,本文讲解了func().(function(arg){})(window).func.bind(sth)().func.call().func.apply()等5种方式,需要的朋友可以参考下     javascript语法灵活,同一个功能有五六种实现方式并不罕见,然后再加上有些反人类的原型继承和异步特性,就更让人一头雾水了.我经常搞不清楚call,apply之间的区别,今天就记录一下,以免再忘了. 在javascript中,方