Когда я пытаюсь использовать 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;
}
Пожалуйста, помогите мне с этим.
Спасибо.