Я знаю, что есть много вопросов по этой теме, но я считаю, что прошел все их за последние 10 дней, и я не смог найти решение для ошибки, которую я сильно страдаю. Все в Windows 7. Я получаю InvalidcastException и не могу решить проблему. Я начинаю сомневаться в том, что можно создать Com -сервер в C#.Test.MyImplementation mi = new Test.MyImplementation();
< /code>
System.invalidcastException был нездоровым
hresult = -2147467262
message = невозможно отменить объект типа 'myTest.myimplementation' type 'test.myumplementation'. at consoleappcom.program.main (string [] args) в C: \ users \ rkohn \ Documents \ Visual Studio 2013 \ Projects \ ConsoLeapplication3 \ ConsoLeaPplication3 \ Program.CS: Line 48
at System.Appdomad._NexeCuteasSembly (RuntimeSembly Assembly, string [] args._nexeasSembly (runtimeSembly Assembly, string)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
This is the COM server Код: < /p>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace MyTest
{
[ComVisible(true)]
[Guid("DBE0E8C4-DABA-41F3-B6A4-CAFE353D3D16")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IPimcManager
{
void GetTabletCount(out UInt32 count);
}
[ComVisible(true)]
[Guid("C6659361-DABA-4746-931C-CAFE4B146690")]
[ProgId("FakeServer.MyImplementation")]
[ClassInterface(ClassInterfaceType.None)]
[ComDefaultInterface(typeof(IPimcManager))] //This to explicitly establish which is the default interface
public class MyImplementation : IPimcManager
{
public MyImplementation() { }
~MyImplementation() { }
public void GetTabletCount(out UInt32 count)
{
Console.WriteLine("GetTabletCount called!");
count = 1;
}
}
}
< /code>
Это клиент -код: < /p>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace Test
{
[ComImport]
[Guid(PimcConstants.IPimcManagerIID)]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IPimcManager
{
void GetTabletCount(out UInt32 count);
}
[ComImport]
[Guid(PimcConstants.PimcManagerCLSID)]
class MyImplementation
{
}
// void GetTabletCount(out UInt32 count);
//void GetTablet(UInt32 tablet, out IPimcTablet IPimcTablet);
internal static class PimcConstants
{
//internal const string PimcManagerCLSID = "e23b1ced-5e47-4fdb-af66-b20370261b5e";
internal const string PimcManagerCLSID = "C6659361-DABA-4746-931C-CAFE4B146690";
internal const string IPimcManagerIID = "DBE0E8C4-DABA-41F3-B6A4-CAFE353D3D16";
//internal const string PimcManagerCLSID = "c6659361-daba-4746-931c-cafe4b146690";
//internal const string IPimcManagerIID = "dbe0e8c4-daba-41f3-b6a4-cafe353d3d16";
//internal const string IPimcManagerIID = "af44bf80-36dd-4118-b4cf-8b1e3f4fb9ce";
}
}
namespace ConsoleAppCOM
{
class Program
{
[STAThread]
static void Main(string[] args)
{
Test.MyImplementation mi = new Test.MyImplementation();
Test.IPimcManager pimcManager = ((Test.IPimcManager)mi);
uint cTablets = 0;
pimcManager.GetTabletCount(out cTablets);
System.Console.WriteLine(DateTime.Now + "-VALUE OBTAINED from PimcManager.GetTabletCount: " + cTablets);
//Thread.Sleep(5);
System.Console.ReadLine();
}
}
}
< /code>
Я уже пробовал StathRead, проверил «Зарегистрироваться для компонента com». Нет InvalidcastException. < /P>
Это IDL, полученный из типа LIB из C# Fakesserver: < /p>
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: FakeServer.tlb
[
uuid(A3CFF4E2-8724-461F-AFD4-D74583E89513),
version(1.0),
custom(90883F05-3D28-11D2-8F17-00A0C9A6186D, "FakeServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
]
library FakeServer
{
// TLib : // TLib : mscorlib.dll : {BED7F4EA-1A96-11D2-8F08-00A0C9A6186D}
importlib("mscorlib.tlb");
// TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");
// Forward declare all types defined in this typelib
interface IPimcManager;
[
odl,
uuid(DBE0E8C4-DABA-41F3-B6A4-CAFE353D3D16),
version(1.0),
oleautomation,
custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, "MyTest.IPimcManager")
]
interface IPimcManager : IUnknown {
HRESULT _stdcall GetTabletCount([out] unsigned long* count);
};
[
uuid(C6659361-DABA-4746-931C-CAFE4B146690),
version(1.0),
custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, "MyTest.MyImplementation")
]
coclass MyImplementation {
interface _Object;
[default] interface IPimcManager;
};
};
< /code>
Это IDL, полученный из типа LIB на сервере C ++ Com (пожалуйста, не рассматривайте метод имени, добавленный в интерфейс, я сделал это во время моих тестов): < /p>
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: simplecomserver.tlb
[
uuid(6F818C55-E6AD-488B-9EB6-511C0CCC0612),
version(1.0),
custom(DE77BA64-517C-11D1-A2DA-0000F8773CE9, 134218331),
custom(DE77BA63-517C-11D1-A2DA-0000F8773CE9, 1413900762),
custom(DE77BA65-517C-11D1-A2DA-0000F8773CE9, "Created by MIDL version 8.00.0603 at Tue Oct 21 11:12:41 2014
")
]
library LibCOMServer
{
// TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");
// Forward declare all types defined in this typelib
interface ICOMServer;
[
odl,
uuid(7F24AABF-C822-4C18-9432-21433208F4DC),
oleautomation
]
interface ICOMServer : IUnknown {
HRESULT _stdcall Name([out, retval] BSTR* objectname);
HRESULT _stdcall GetTabletCount([out] unsigned long* pcTablets);
};
[
uuid(6AE24C34-1466-482E-9407-90B98798A712),
helpstring("COMServer object")
]
coclass CoCOMServer {
[default] interface ICOMServer;
};
};
< /code>
Может ли быть какое -либо отношение к C# Coclass, наследуемому от интерфейса _object;? < /p>
coclass MyImplementation {
interface _Object;
[default] interface IPimcManager;
};
< /code>
Любая справка приветствуется. < /p>
Подробнее здесь: https://stackoverflow.com/questions/264 ... in-c-sharp
InvalidcastException с Com Client и Server в C# ⇐ C#
Место общения программистов C#
-
Anonymous
1754035340
Anonymous
Я знаю, что есть много вопросов по этой теме, но я считаю, что прошел все их за последние 10 дней, и я не смог найти решение для ошибки, которую я сильно страдаю. Все в Windows 7. Я получаю InvalidcastException и не могу решить проблему. Я начинаю сомневаться в том, что можно создать Com -сервер в C#.Test.MyImplementation mi = new Test.MyImplementation();
< /code>
System.invalidcastException был нездоровым
hresult = -2147467262
message = невозможно отменить объект типа 'myTest.myimplementation' type 'test.myumplementation'. at consoleappcom.program.main (string [] args) в C: \ users \ rkohn \ Documents \ Visual Studio 2013 \ Projects \ ConsoLeapplication3 \ ConsoLeaPplication3 \ Program.CS: Line 48
at System.Appdomad._NexeCuteasSembly (RuntimeSembly Assembly, string [] args._nexeasSembly (runtimeSembly Assembly, string)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
This is the COM server Код: < /p>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace MyTest
{
[ComVisible(true)]
[Guid("DBE0E8C4-DABA-41F3-B6A4-CAFE353D3D16")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IPimcManager
{
void GetTabletCount(out UInt32 count);
}
[ComVisible(true)]
[Guid("C6659361-DABA-4746-931C-CAFE4B146690")]
[ProgId("FakeServer.MyImplementation")]
[ClassInterface(ClassInterfaceType.None)]
[ComDefaultInterface(typeof(IPimcManager))] //This to explicitly establish which is the default interface
public class MyImplementation : IPimcManager
{
public MyImplementation() { }
~MyImplementation() { }
public void GetTabletCount(out UInt32 count)
{
Console.WriteLine("GetTabletCount called!");
count = 1;
}
}
}
< /code>
Это клиент -код: < /p>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace Test
{
[ComImport]
[Guid(PimcConstants.IPimcManagerIID)]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IPimcManager
{
void GetTabletCount(out UInt32 count);
}
[ComImport]
[Guid(PimcConstants.PimcManagerCLSID)]
class MyImplementation
{
}
// void GetTabletCount(out UInt32 count);
//void GetTablet(UInt32 tablet, out IPimcTablet IPimcTablet);
internal static class PimcConstants
{
//internal const string PimcManagerCLSID = "e23b1ced-5e47-4fdb-af66-b20370261b5e";
internal const string PimcManagerCLSID = "C6659361-DABA-4746-931C-CAFE4B146690";
internal const string IPimcManagerIID = "DBE0E8C4-DABA-41F3-B6A4-CAFE353D3D16";
//internal const string PimcManagerCLSID = "c6659361-daba-4746-931c-cafe4b146690";
//internal const string IPimcManagerIID = "dbe0e8c4-daba-41f3-b6a4-cafe353d3d16";
//internal const string IPimcManagerIID = "af44bf80-36dd-4118-b4cf-8b1e3f4fb9ce";
}
}
namespace ConsoleAppCOM
{
class Program
{
[STAThread]
static void Main(string[] args)
{
Test.MyImplementation mi = new Test.MyImplementation();
Test.IPimcManager pimcManager = ((Test.IPimcManager)mi);
uint cTablets = 0;
pimcManager.GetTabletCount(out cTablets);
System.Console.WriteLine(DateTime.Now + "-VALUE OBTAINED from PimcManager.GetTabletCount: " + cTablets);
//Thread.Sleep(5);
System.Console.ReadLine();
}
}
}
< /code>
Я уже пробовал StathRead, проверил «Зарегистрироваться для компонента com». Нет InvalidcastException. < /P>
Это IDL, полученный из типа LIB из C# Fakesserver: < /p>
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: FakeServer.tlb
[
uuid(A3CFF4E2-8724-461F-AFD4-D74583E89513),
version(1.0),
custom(90883F05-3D28-11D2-8F17-00A0C9A6186D, "FakeServer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
]
library FakeServer
{
// TLib : // TLib : mscorlib.dll : {BED7F4EA-1A96-11D2-8F08-00A0C9A6186D}
importlib("mscorlib.tlb");
// TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");
// Forward declare all types defined in this typelib
interface IPimcManager;
[
odl,
uuid(DBE0E8C4-DABA-41F3-B6A4-CAFE353D3D16),
version(1.0),
oleautomation,
custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, "MyTest.IPimcManager")
]
interface IPimcManager : IUnknown {
HRESULT _stdcall GetTabletCount([out] unsigned long* count);
};
[
uuid(C6659361-DABA-4746-931C-CAFE4B146690),
version(1.0),
custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, "MyTest.MyImplementation")
]
coclass MyImplementation {
interface _Object;
[default] interface IPimcManager;
};
};
< /code>
Это IDL, полученный из типа LIB на сервере C ++ Com (пожалуйста, не рассматривайте метод имени, добавленный в интерфейс, я сделал это во время моих тестов): < /p>
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: simplecomserver.tlb
[
uuid(6F818C55-E6AD-488B-9EB6-511C0CCC0612),
version(1.0),
custom(DE77BA64-517C-11D1-A2DA-0000F8773CE9, 134218331),
custom(DE77BA63-517C-11D1-A2DA-0000F8773CE9, 1413900762),
custom(DE77BA65-517C-11D1-A2DA-0000F8773CE9, "Created by MIDL version 8.00.0603 at Tue Oct 21 11:12:41 2014
")
]
library LibCOMServer
{
// TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");
// Forward declare all types defined in this typelib
interface ICOMServer;
[
odl,
uuid(7F24AABF-C822-4C18-9432-21433208F4DC),
oleautomation
]
interface ICOMServer : IUnknown {
HRESULT _stdcall Name([out, retval] BSTR* objectname);
HRESULT _stdcall GetTabletCount([out] unsigned long* pcTablets);
};
[
uuid(6AE24C34-1466-482E-9407-90B98798A712),
helpstring("COMServer object")
]
coclass CoCOMServer {
[default] interface ICOMServer;
};
};
< /code>
Может ли быть какое -либо отношение к C# Coclass, наследуемому от интерфейса _object;? < /p>
coclass MyImplementation {
interface _Object;
[default] interface IPimcManager;
};
< /code>
Любая справка приветствуется. < /p>
Подробнее здесь: [url]https://stackoverflow.com/questions/26476889/invalidcastexception-with-com-client-and-server-in-c-sharp[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия