C#调用一个c++写的dll,需要在调用前初始化com库(因为这个dll中用到了com对象),
在c++可使用CoInitializeEx初始化,但在c#中调用CoInitializeEx似乎不可以,代码如下:
 
        static void Main()
        {
            AutoCAD.CoInitializeEx((System.IntPtr)null, CoInit.MultiThreaded);
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 

new SignatureService() 
};
            ServiceBase.Run(ServicesToRun);
            AutoCAD.CoUninitialize();
        } namespace SignatureService
{
    
        public enum CoInit
        {
            MultiThreaded = 0x0,
            ApartmentThreaded = 0x2,
            DisableOLE1DDE = 0x4,
            SpeedOverMemory = 0x8
        }
        [DllImport("Ole32.dll", ExactSpelling = true, EntryPoint = "CoInitializeEx", 
          CallingConvention = CallingConvention.StdCall, SetLastError = false, PreserveSig = false)]
        public static extern void CoInitializeEx(IntPtr pvReserved, CoInit coInit);        [DllImport("ole32.dll")]
        public static extern int CoUninitialize();
    }
}
程序可以运行,但使用到dll中的com对象时,有异常,应该是com库未正常初始化引起。请问1.clr会初始化com库,是否是这样吗?
 
2.clr初始化com库与CoInitializeEx初始化的是否有区别?3.能不能屏蔽clr初始化com库,由我自己初始化。对C#不是很了解,请各路大侠指教,不胜感激。