Marius Bancila
Это возможно, если вы используете COM. Вы должны сделать свой класс C# открытым для COM, а затем вы можете использовать его в C++. Вот пример, вдохновленный вопросом здесь:
namespace ManagedDLL
{
// Interface declaration.
[Guid("32529FAE-6137-4c62-9945-DE4198FA9D1B")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface ICalculator
{
[DispId(1)]
int Add(int Number1, int Number2);
};
}
namespace ManagedDLL
{
// Interface implementation.
[Guid("9F2F180D-94A9-47e6-91CC-6BCFABD1DDEB")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("ManagedDLL.ManagedClass")]
public class ManagedClass : ICalculator
{
public int Add(int Number1, int Number2)
{
return Number1 + Number2;
}
}
}
Затем вы можете использовать это в C++:
#import "..\bin\ManagedDLL.tlb" raw_interfaces_only
using namespace ManagedDLL;
int _tmain(int argc, _TCHAR* argv[])
{
// Initialize COM.
HRESULT hr = CoInitialize(NULL);
// Create the interface pointer.
ICalculatorPtr pICalc(__uuidof(ManagedClass));
long lResult = 0;
// Call the Add method.
pICalc->Add(5, 10, &lResult);
wprintf(L"The result is %d\n", lResult);
// Uninitialize COM.
CoUninitialize();
return 0;
}
doree007
как я могу использовать COM. Я новичок в этой области. Нужно ли мне создавать библиотеку классов или есть какой-то способ использовать существующее приложение windows.
можете ли вы помочь мне с пошаговыми инструкциями?. это действительно полезно для меня, чтобы понять, что происходит при вызове функции.