[问]在ODL文件中如何定义VB中可用的字符串常量?

VBAHZ 2017-07-18 02:55:31
想把字符串常量定义在TLB文件中,这样在VB的IDE里可以直接使用,比调用资源文件(只能在运行时使用)方便多了

用MKTYPLIB.EXE编译ODL文件的方法

按MSDN中的例子,以下除了第一句可用,其它都报错,
const char my_char1 = 'a';
const char my_char2 = my_char1;
const wchar_t my_wchar3 = L'a';
const wchar_t * pszNote = L"Note";
而第一个在VB中使用的时候,提示自动化类型错误,无法用

请问,如何定义才可以在VB中调用TLB的字符串常量?
...全文
449 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-07-21
  • 打赏
  • 举报
回复
C:\Microsoft SDK\Bin\Midl.Exe C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\Midl.Exe C:\Program Files\Microsoft Visual Studio\VC98\Bin\MIDL.EXE C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\midl.exe C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\Midl.Exe
舉杯邀明月 2017-07-21
  • 打赏
  • 举报
回复
网上应该能搜索到吧。但一个单独的exe无法使用啊。 我用的是VC6的工具中的midl,应该只要安装了Visual Studio,都会有这个工具的。
VBAHZ 2017-07-21
  • 打赏
  • 举报
回复
原来是MKTYPLIB.exe的问题啊! 怪不得连MSDN上的很多ODL例子都通不过. 之间就用过BSTR定义的,但MKTYPLIB.exe就是无法编译,破东西浪费俺N天的时间 不知道MIDL.exe哪里可以下载啊?
舉杯邀明月 2017-07-21
  • 打赏
  • 举报
回复
引用 7 楼 VBAHZ 的回复:
是不是单个EXE文件不能单独使用?
我在3楼不是已经说了吗!
VBAHZ 2017-07-21
  • 打赏
  • 举报
回复
是不是单个EXE文件不能单独使用?
舉杯邀明月 2017-07-21
  • 打赏
  • 举报
回复
引用 5 楼 VBAHZ 的回复:
我用命令行 midl.exe /ms_ext /tlb output.tlb output.odl 为什么总是报错啊? output.odl 内容肯定没问题的,已用Mktyptlb.exe编译通过
它报错,都是有错误信息的! 自己看着“错误信息”对症下药,不就好了!
VBAHZ 2017-07-21
  • 打赏
  • 举报
回复
我用命令行 midl.exe /ms_ext /tlb output.tlb output.odl 为什么总是报错啊? output.odl 内容肯定没问题的,已用Mktyptlb.exe编译通过
舉杯邀明月 2017-07-18
  • 打赏
  • 举报
回复
以前看到的TLB中,常量类型基本都是32位或16位整数的“数值类型”,
刚看到楼主的帖子,试了一下,发现还是可以定义字符串常量的。


写了一个 Test.odl ,内容如下:
[
uuid(12345678-1236-1235-1234-123456789ABC),
helpstring("Test Library"),
lcid(0x0000), version(1.0)
]

library MyConsts
{

module MyConsts
{
const long HKEY_CLASSES_ROOT = 0x80000000 ;
const long HKEY_CURRENT_USER = 0x80000001 ;
const BSTR TestName = "Note";
};
};

编译后,在VB6中引用、测试,完全正常:
单步运行程序,在代码执行中断时,把鼠标移到 TestName上悬停,工具提示上会显示出它的常量值。
在立即窗口中执行命令 print testname ,也正确输出了字符串 Note 。


只不过,这个odl文件无法用MKTYPLIB.exe编译,只能用MIDL.exe才能编译出来。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧