CLR (c ++ .net) как дополнение к динамическому NAV

Я думаю, что это может быть более общим, но в этом случае я пытаюсь создать CLR c ++ для Microsoft Dynamic NAV.

Если я делаю это в C #, он работает нормально. Код C #:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace VisualCSharp
{
public class MyTest
{
public MyTest()
{
}

public int AddTest(int a, int b)
{
return a + b;
}
}
}

Когда я пытаюсь добавить это в Dynamic NAV, я нахожу это:

Список динамических сборок NAV

Выберите и нажмите ОК:

Выберите список

Все идет нормально.

Затем мне нравится делать то же самое в C ++ с классом CLR.

Я начинаю с создания библиотеки классов C ++ CLR и добавляю код для теста: (я сделал это здесь, просто для простоты кода, но это не имеет значения, если я его отделю).

#pragma once

using namespace System;

namespace VisualCPP
{

public ref class MyTest
{
public:
MyTest()
{
};

int AddTest(int a, int b)
{
return a + b;
};
};
}

Сделайте то же самое с этим. В списке ассемблера он совпадает с надстройкой VisualCSharp, но отображается как процессор x86, но это нормально. У меня есть C #, который также делает это (обертки COM), и они также работают нормально.

Однако, когда я нажимаю «ОК», я получаю сообщение об ошибке, сообщающее, что он не может загрузить тип «VisualCPP».

Итак, вопрос: что мне не хватает? Я знаю, что код CLR отличается тем, что он не является чисто управляемым (даже при использовании опции компримированной / чистой компиляции не работает), но есть ли какая-то установка или объявление, которые нужно было сделать, чтобы сделать мой класс видимым?

0

Решение

Насколько я знаю, вы не можете использовать неуправляемый код в NAV.
Ваша сборка также должна быть подписана — в вашем примере токен открытого ключа имеет значение null, поэтому он не будет работать.

В подобных ситуациях я всегда рекомендую создавать DLL-оболочку для обработки неуправляемого кода, хотя это (например, это то, что Microsoft сделала с Office SDK)

Я надеюсь, что это помогает.

Ура!

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]