Неопределенная ошибка при запуске функции C # dll в C ++ - PullRequest
1 голос
/ 14 марта 2019

Когда я пытаюсь использовать C # dll с C ++, я могу успешно импортировать его.Тем не менее, когда я запускаю функцию, я получаю смутную ошибку: Unhandled exception at 0x76E8C632 in DLL Test Open.exe: Microsoft C++ exception: _com_error at memory location 0x0076F524. occurred

Я попытался выполнить поиск, но ничего не появляется, поскольку он очень расплывчатый.

Код DLL:

// Interface declaration.
[Guid("32529FAE-6137-4c62-9945-DE4198FA9D1B")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface ICalculator
{
    [DispId(1)]
    void Add(int Number1, int Number2, IntPtr results);
};

// Interface implementation.
[Guid("9F2F180D-94A9-47e6-91CC-6BCFABD1DDEB")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("ManagedDLL.ManagedClass")]
public class ManagedClass : ICalculator
{
    public void Add(int Number1, int Number2, IntPtr results)
    {
        long sum = Number1 + Number2;
        Marshal.StructureToPtr(sum, results, false);
    }
}

Выполнить код (C ++):

int main()
{
    // Initialize COM.
    HRESULT hr = CoInitialize(NULL);

    // Create the interface pointer.
    ICalculatorPtr pICalc(__uuidof(ManagedClass));

    long lResult = 0;
    long firstNum = 1;
    long secondNum = 2;

    // Call the Add method.
    pICalc->Add(firstNum, secondNum,lResult);


    // Uninitialize COM.
    CoUninitialize();

    return 0;
}

Пожалуйста, помогите мне с этим.

Спасибо.

...