C++ 如何在c++;?
目前我正在使用以下语句:C++ 如何在c++;?,c++,visual-c++,com,typelib,C++,Visual C++,Com,Typelib,目前我正在使用以下语句: #import "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\test.tlb" named_guids 但我是以编程方式获取文件夹路径的。i、 例如,“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727” 我必须从这个路径加载test.tlb,这个路径位于一个变量中,比如说,folderpath。我必须通过连接folderpath+test.tlb以编程方式导入tlb。如何执行
#import "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\test.tlb" named_guids
但我是以编程方式获取文件夹路径的。i、 例如,“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727”
我必须从这个路径加载
test.tlb
,这个路径位于一个变量中,比如说,folderpath
。我必须通过连接folderpath+test.tlb
以编程方式导入tlb。如何执行此操作?如果有帮助,您可以指定程序ID,例如:
#import "progid:Outlook.Application" named_guids
这比使用硬编码路径要好。要在运行时以编程方式加载TLB文件(COM类型库),您可以利用它 编译时导入的TLB应复制到一个众所周知且一致的位置,在bild期间可以在该位置找到它。如果您在团队环境中工作,您可能希望将TLB检查到SCM系统中,以便每个人都从相同的相对位置引用相同版本的TLB文件
此外,TLB所在的路径可以作为包含目录(与用于头文件的目录相同)提供给编译器。这看起来非常像一个副本,您到底想完成什么任务?为什么您自己编译的项目的TLB位于.NET目录内?它是如何实现的?因为这是硬编码来删除这个硬编码,所以我要问这个问题。创建tlb和将程序集注册为COM服务器是不相关的。您也可以使用汇编过程中生成的tlb,并在不使用/tlb参数的情况下注册组件。这样一来,你一开始就不会有这个问题了。我该怎么做呢。假设我的c#名称空间是TestNm,接口是ITest类是SqlClass,最后myy tlb是Test.tlb,那么#import“progid:Test.tlb”是正确的…#import“Guid:35145a33-e434-49dc-92cf-e056c508525a”命名为我这样尝试过的Guid。但它显示无法打开lobrary“Guid:35145a33-e434-49dc-92cf-e056c508525a”没有此类库我尝试了#导入“progid:Test.SqlClass”,但出现了错误。请注意,您注册了类型库了吗?除非您先这样做,否则您将无法通过GUID或progid访问它。