<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
郑昀记录 200409<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
C#写的组件,一般C++无法调用。除非在C#中这么做:
第一步,修改HTMLParser工程属性:
Build信息页中“Register for COM interop”设置为True。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype>
第二步,在class特意声明:
namespace HTMLParser
{
[Guid("<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="1" unitname="F">1F</chmetcnv>6EBDEF-1111-2222<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="86" unitname="F">-86F</chmetcnv>2-0CEF0ED302E0")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface _ParseHTML
{
[DispId(1)]
String GetVersion();
[DispId(2)]
String GetLastError();
[DispId(3)]
String ParseFile(String strRegularExpression);
}
[Guid("C<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="11113" unitname="C">11113C</chmetcnv>6<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="23" unitname="F">-23F</chmetcnv>3-4db5-2222-BF5BD<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="95" unitname="a">95A</chmetcnv><chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="5" unitname="C">5C</chmetcnv>81")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("HTMLParser.ParseHTML")]
public class ParseHTML : _ParseHTML
{。。。
|
这样,就能够像调用一个普普通通的COM组件一样了。
当然在Visual C++调用该组件时也需要第三个技巧:
///////////////////////////////////////////////////
///
/// 对于这种特殊的C#写的COM组件,必须以特殊方式调用
HTMLParser::_ParseHTML *com_ptr_Parser;
HTMLParser::_ParseHTMLPtr pPaser(__uuidof(HTMLParser::ParseHTML));
com_ptr_Parser = pPaser;
_bstr_t bstrXMLFilePath =
com_ptr_Parser->ParseFile(
_bstr_t(strRegularExpression.c_str()));
|
更多信息参见《Creating a CCW for COM enabled non .NET applications》
(Nick Parker http://www.codeproject.com/dotnet/nettocom.asp)。
郑昀记录 200409<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
C#写的组件,一般C++无法调用。除非在C#中这么做:
第一步,修改HTMLParser工程属性:
Build信息页中“Register for COM interop”设置为True。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype>
第二步,在class特意声明:
namespace HTMLParser
{
[Guid("<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="1" unitname="F">1F</chmetcnv>6EBDEF-1111-2222<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="86" unitname="F">-86F</chmetcnv>2-0CEF0ED302E0")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface _ParseHTML
{
[DispId(1)]
String GetVersion();
[DispId(2)]
String GetLastError();
[DispId(3)]
String ParseFile(String strRegularExpression);
}
[Guid("C<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="11113" unitname="C">11113C</chmetcnv>6<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="23" unitname="F">-23F</chmetcnv>3-4db5-2222-BF5BD<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="95" unitname="a">95A</chmetcnv><chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="5" unitname="C">5C</chmetcnv>81")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("HTMLParser.ParseHTML")]
public class ParseHTML : _ParseHTML
{。。。
|
这样,就能够像调用一个普普通通的COM组件一样了。
当然在Visual C++调用该组件时也需要第三个技巧:
///////////////////////////////////////////////////
///
/// 对于这种特殊的C#写的COM组件,必须以特殊方式调用
HTMLParser::_ParseHTML *com_ptr_Parser;
HTMLParser::_ParseHTMLPtr pPaser(__uuidof(HTMLParser::ParseHTML));
com_ptr_Parser = pPaser;
_bstr_t bstrXMLFilePath =
com_ptr_Parser->ParseFile(
_bstr_t(strRegularExpression.c_str()));
|
更多信息参见《Creating a CCW for COM enabled non .NET applications》
(Nick Parker http://www.codeproject.com/dotnet/nettocom.asp)。
郑昀记录 200409<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
C#写的组件,一般C++无法调用。除非在C#中这么做:
第一步,修改HTMLParser工程属性:
Build信息页中“Register for COM interop”设置为True。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype>
第二步,在class特意声明:
namespace HTMLParser
{
[Guid("<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="1" unitname="F">1F</chmetcnv>6EBDEF-1111-2222<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="86" unitname="F">-86F</chmetcnv>2-0CEF0ED302E0")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface _ParseHTML
{
[DispId(1)]
String GetVersion();
[DispId(2)]
String GetLastError();
[DispId(3)]
String ParseFile(String strRegularExpression);
}
[Guid("C<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="11113" unitname="C">11113C</chmetcnv>6<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="23" unitname="F">-23F</chmetcnv>3-4db5-2222-BF5BD<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="95" unitname="a">95A</chmetcnv><chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="5" unitname="C">5C</chmetcnv>81")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("HTMLParser.ParseHTML")]
public class ParseHTML : _ParseHTML
{。。。
|
这样,就能够像调用一个普普通通的COM组件一样了。
当然在Visual C++调用该组件时也需要第三个技巧:
///////////////////////////////////////////////////
///
/// 对于这种特殊的C#写的COM组件,必须以特殊方式调用
HTMLParser::_ParseHTML *com_ptr_Parser;
HTMLParser::_ParseHTMLPtr pPaser(__uuidof(HTMLParser::ParseHTML));
com_ptr_Parser = pPaser;
_bstr_t bstrXMLFilePath =
com_ptr_Parser->ParseFile(
_bstr_t(strRegularExpression.c_str()));
|
更多信息参见《Creating a CCW for COM enabled non .NET applications》
(Nick Parker http://www.codeproject.com/dotnet/nettocom.asp)。
分享到:
相关推荐
1.C#调用C++封装的动态库dll 2.结构体含union共同体的C++转C#示例 3.C#结构体指针的调用演示 4.C#读取USB数据设备的示例 5.C#动态调用C++dll库示例 6.C#静态调用C++dll库示例 注意:UsbLibDotNet使用时候需要先安装...
C#编写的DOTNET应用论坛0904版(Only Sql)源代码 C#编写的DOTNET应用论坛0904版(Only Sql)源代码. C#编写的DOTNET应用论坛0904版(Only Sql)源代码.
C#发布混淆dotNET_Reactor和反编译工具 Ilasm.exe ildasm.exe
dotnet 数据解压缩 压缩 c# vb.net 组件包 dotnet 数据解压缩 压缩 c# vb.net 组件包 dotnet 数据解压缩 压缩 c# vb.net 组件包 dotnet 数据解压缩 压缩 c# vb.net 组件包
C#调用java程序的方法,把java类转化成dotnet类,在c#项目直接调用。
C# 2022入门(DotNetCore 版本).pdf
本软件是一个VS编译工具,是目前体积最小的VS编译器,支持c#、vb.net,支持winform和webform语言虽不能完全替代Visual studio,不过在没有Visual studio时,应急用下,还是不错的,此为dotNet1.1环境。 ------------...
FTP服务器源码(C#)_dotnet整站程序
c# .net VLC视频播放器开发 全格式播放器(含源码) 含组件plugins及dll文件 Vlc.DotNet.Core Vlc.DotNet.Forms Vlc.DotNet.Wpf 和Vlc.DotNet.FormsSamples,Vlc.DotNet.WpfSamples 项目说明:...
水晶报表2008.DOTNET组件.CrystalDecisions
dotnet调用abapwebservice配置步骤[归纳].pdf
C#编写的DOTNET应用论坛0904版~星海下载
C# 实用类集 DotNet.Utilities 整理完整版,集合的比较全。 C#实用类集-DotNet.Utilities-整理完整版,欢迎下载 C# 工具类 集合 完整版
C#_dotNet多线程教程[汇编].pdf
视频小偷程序(C#)_dotnet影音娱乐网站
第三方调用U9服务说明(DotNet平台)
C# dotnet处理图片
C SHARP AND DOTNET PROGRAMMING BOOK
C#实用类集-DotNet.Utilities
C#dotnet 加壳 混淆工具