• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 在用ATL编写dephi调用的COM组件时遇到一些问题。

在用ATL编写dephi调用的COM组件时遇到一些问题。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 在用ATL编写dephi调用的COM组件时遇到一些问题。等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 在用ATL编写dephi调用的COM组件时遇到一些问题。
描述:

我试着编写dephi可以调用的组件,组件编写完成,发现dephi无法调用,想问一下高手关于atl编程的几个问题:
1. 我编译时是否要选择Win32 Unicode Release Minidependency 这类Unicode 选项
2. 如果用 Unicode 编译我该如何修改下面的代码.
//inStr: 为输入的字符串
//long :  字符串长度
//outstr: 输出的字符串
//jia:    true时:outstr = instr + '1'; false时:outstr = instr + '0';
STDMETHODIMP CDesmi::Setmi(VARIANT inStr, long insize, VARIANT *outStr, BOOL jia)
{
CComVariant varNum(inStr);
HRESULT hr = varNum.ChangeType(VT_BSTR);
if(FAILED(hr))
  return(DISP_E_TYPEMISMATCH);
char *p = NULL;
int charsize = sizeof(char);
int malcsize = int(charsize*(insize+2));
p = (char *)malloc(malcsize);
memset(p, 0, malcsize);
USES_CONVERSION;
lstrcpy(p,OLE2T(varNum.bstrVal));  //在Unicode下编译出错
if (p==NULL)
  return S_FALSE;
if (jia)
  p[insize] = '1';
else
  p[insize] = '0';
p[insize] = '\0';
CComBSTR outvar(p);
VariantInit(outStr);
outStr->vt = VT_BSTR;
outStr->bstrVal = outvar;
free(p);
return S_OK;
}


解决方案1:

lstrcpy(p,OLE2T(varNum.bstrVal));  //在Unicode下编译出错
把lstrcpy换成_tcscpy.

解决方案2:

写成:
_bstr_t str(varNum.bstrVal,true);
char* p = (char*)str;


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 FreeLibraryDLL处理Webbrowser内存泄露
  • 2017-06-04 请问一个非常简单的问题
  • 2017-06-04 有谁知道哪有ATL入门电子书可供下载,想学学ATL,进者有分!
  • 2017-06-04 mfc中windowsmediaplayer全屏之后的按键响应问题!详细请见如下!
  • 2017-06-05 请问在VC环境下,如何知道一个调用的进程已经工作完毕?
  • 2017-06-05 该内存不能为"read"??
  • 2017-06-05 MFC如何调用EXCEL
  • 2017-06-05 进程间通讯问题
  • 2017-06-05 请教:为什么有的dll要注册?我从来没用过。一般都是写好了直接使用。另外怎么注册?
  • 2017-06-04 vs2008异常OLE2AUnicode宏转换不正确,请大家指教一下

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • COM传递结构问题
    • 请大侠进来show一下你的代码吧,小弟不知道怎么写这样的代码啊!请进---->
    • ActiveX控件如何得到容器窗口的句柄
    • ie8下控件udp不能接收问题
    • VCCOM本地服务器字符串调用失败
    • 插入ole对象时,会增加toolbar,怎样才能不让他增加toolbar
    • 如何编程实现将一个可执行程序插入另一程序的开始部分。
    • COM组件命名规范(急求)
    • DLL中的CWnd子类接收消息的问题
    • WTL滚动条没有反应(100分求助)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有