Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема v7CLR - или я дурак, или сани не едут! ОШИБКА (число прочтений - 3473 )
sakhru.ru
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 19. Июля 2010
v7CLR - или я дурак, или сани не едут! ОШИБКА
19. Июля 2010 :: 08:19
Печать  
создал класс (visual studio 2008), скомпелировал, в 1с написал:

     ЗагрузитьВнешнююКомпоненту("v7CLR.dll");
     ком=СоздатьОбъект("!fff.fff, fff, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");


при испонение вылетает ошибка:

ком=СоздатьОбъект("!fff.fff, fff, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
{Глобальный модуль(3)}: Класс не найден
ком=СоздатьОбъект("!fff.fff, fff, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
{Глобальный модуль(3)}: System.Runtime.InteropServices.SEHException: Внешний компонент создал исключение.
   в CBLModule.RaiseExtRuntimeError(SByte Со сжатыми губами* , Int32 )
   в CCLRWrapper.{ctor}(CCLRWrapper* , SByte* szClassName)


Ну и что делать. Первый раз с этим компонентом работаю. По описанию то что надо, а на деле...
Дай бог чтобы я дурак, а то сани жалко!
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: v7CLR - или я дурак, или сани не едут! ОШИБКА
Ответ #1 - 19. Июля 2010 :: 20:19
Печать  
Нужно подписать сборку и добавить ее в глобальный кеш.
How to: Sign an Assembly (Visual Studio)
.NET Framework Configuration Tool
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: v7CLR - или я дурак, или сани не едут! ОШИБКА
Ответ #2 - 19. Июля 2010 :: 20:30
Печать  
Если не хочется добавлять сборку в GAC (по религиозным или каким другим соображениям), то есть другое решение (сложное):
Вручную загрузить сборку в AppDomain, и создавать объекты из этой сборки через Reflection.
Код
Выбрать все
	Ass=СоздатьОбъект("!System.Reflection.Assembly");
	a=Ass.LoadFile(КаталогИБ()+"ClassLibrary1.dll");
	T=A.GetType2("ClassLibrary1.Class1");
	Act=СоздатьОбъект("!System.Activator");
	O2=Act.CreateInstance2(T); 

  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: v7CLR - или я дурак, или сани не едут! ОШИБКА
Ответ #3 - 19. Июля 2010 :: 20:35
Печать  
steban писал(а) 19. Июля 2010 :: 20:30:
Вручную загрузить сборку в AppDomain

Но тут возможны побочные эффекты. Подробностей не вспомню но, кажется, сборки, загруженные через LoadFile, исполняются в каком-то особом контексте, как не очень доверенные.
Решение с добавлением в GAC, ИМХО лучше.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
sakhru.ru
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 19. Июля 2010
Re: v7CLR - или я дурак, или сани не едут! ОШИБКА
Ответ #4 - 19. Июля 2010 :: 21:35
Печать  
Большое спасибо! Сани поехали! Но сразу же возникли вопросы.
1. Закрываем 1с - возникает ошибка (ну типа память не может быть read). Понятно, что объект не выгружается. Но почему?
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: v7CLR - или я дурак, или сани не едут! ОШИБКА
Ответ #5 - 20. Июля 2010 :: 13:40
Печать  
sakhru.ru писал(а) 19. Июля 2010 :: 21:35:
1. Закрываем 1с - возникает ошибка (ну типа память не может быть read)

Очень мало инфы для разборок (версия винды, версия 1с, загружена ли 1с++, если да, то какая версия, какой код выполняется).

Предполагая, что 1с++ все-таки используется, рекомендую попробовать одну из последних версий. Например вот эту: http://trad.citykirov.ru/icpp32110_20100720.rar
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
sakhru.ru
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 19. Июля 2010
Re: v7CLR - или я дурак, или сани не едут! ОШИБКА
Ответ #6 - 20. Июля 2010 :: 21:44
Печать  
1. Windows XP sp3
2. В данной конфигурации не используется (собственно там вообще нет ничего кроме v7clr)
3.
     ЗагрузитьВнешнююКомпоненту("v7CLR.dll");
     ком=СоздатьОбъект("!_1CUtils.CRandom, 1CUtils, Version=1.0.0.0, Culture=neutral, PublicKeyToken=543dc9a5a5e5ceaf");
     Для п=1 По 45 Цикл         
           ком.ReInit();
           Сообщить(ком.GetRandomNumber(1,43));
     КонецЦикла;

CRandom - мой класс, в C# отрабатывает без проблем, в принципе и так отрабатывает ожидаемо, но выгружается некорректно
  
Наверх
 
IP записан
 
sakhru.ru
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 19. Июля 2010
Re: v7CLR - или я дурак, или сани не едут! ОШИБКА
Ответ #7 - 20. Июля 2010 :: 21:46
Печать  
Кстате! А к восьмёрке такого нету? В принципе .Net bridge попробовал, вроде нормально, но привязываться к платному компоненту нехочется, даже из-за 50 евро.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать