Я пишу приложение на C #, которое должно использовать API-интерфейс C ++, предоставленный моим клиентом. Библиотека работает нормально, когда на нее ссылается приложение vb6, но когда я ссылаюсь на нее в своем приложении на c # и пытаюсь вызвать те же методы, я получаю другое (неправильное) поведение. Методы, которые я вызываю, принимают пару строковых аргументов. При условии, что у меня нет исходного кода библиотеки, я могу только догадываться, что может быть не так, и это приводит меня к следующей мысли: возможно ли, что библиотека могла быть разработана для вызова только из vb6? Я имею в виду, например, что можно ожидать, что строковые параметры будут закодированы определенным образом, отличным от того, который использует c #. Если так, есть ли обходной путь для этого? На данный момент лучшее, что я мог сделать, - это создать оболочку vb6 ocx, но это не изящное и не менее простое в развертывании решение.
Я публикую код, который инициализирует объект:
ApiPrnClass apiprn; // this is the class imported form the com reference
for (int j = 0; j < 10; j++)
{
apiprn = new ApiPrnClass();
apiprn.FMGetModel(_TIPODISPOSITIVO.iDocument);
apiprn.FMPRNFormat(_TIPODISPOSITIVO.iDocument, _TIPOFORMATO.DEL_CONDENSED, "");
apiprn.PRNBeforePrint(_TIPODISPOSITIVO.iDocument, "");
for (int i = 0; i < 10; i++)
{
string linea = "TEST C/ BUFF XXX-----------------------".Replace("XXX", (10 * j + i).ToString().PadLeft(3, '0'));
apiprn.FMPrint(_TIPODISPOSITIVO.iDocument, linea);
}
apiprn.PRNAfterPrint(_TIPODISPOSITIVO.iDocument);
System.Threading.Thread.Sleep(1000);
}
Буду признателен за любую помощь,
Спасибо,
Бернабе