// Calc.h: объявление CCalc
#pragma once
#include "resource.h" // основные символы
#include "lab_02Com_i.h"
// CCalc
class ATL_NO_VTABLE CCalc :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCalc, &CLSID_Calc>,
public ICalc
{
public:
CCalc()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_CALC)
DECLARE_NOT_AGGREGATABLE(CCalc)
ATL DLL ядро и интерфейс на C#
Тут такая проблема....при создании объекта для получения функций и переменных из класа в com, я не могу к ним доступиться.....подскажите что нужно дописать.....клиєнт написан на c#....atl на c++
Calc.h
Код:
Calc.cpp
Код:
// Calc.cpp: реализация CCalc
#include "stdafx.h"
#include "Calc.h"
// CCalc
STDMETHODIMP CCalc::plus(double *pVal)
{
*pVal = a+b;
return S_OK;
}
STDMETHODIMP CCalc::minus(double *pVal)
{
*pVal = a-b;
return S_OK;
}
STDMETHODIMP CCalc::dil(double *pVal)
{
*pVal = a/b;
return S_OK;
}
STDMETHODIMP CCalc::mnoj(double *pVal)
{
*pVal = a*b;
return S_OK;
}
#include "stdafx.h"
#include "Calc.h"
// CCalc
STDMETHODIMP CCalc::plus(double *pVal)
{
*pVal = a+b;
return S_OK;
}
STDMETHODIMP CCalc::minus(double *pVal)
{
*pVal = a-b;
return S_OK;
}
STDMETHODIMP CCalc::dil(double *pVal)
{
*pVal = a/b;
return S_OK;
}
STDMETHODIMP CCalc::mnoj(double *pVal)
{
*pVal = a*b;
return S_OK;
}
Вызов
Код:
...
using lab_02ComLib;
namespace lab_01
{
public partial class Form1 : Form
{
int user_oper = 0;
double first_value = 0, second_value = 0;
bool minus_used = false;
CalcClass c = new CalcClass();
private void button3_Click(object sender, EventArgs e)
{
c.dil() // Здесь само собой ошибка
}
}
}
using lab_02ComLib;
namespace lab_01
{
public partial class Form1 : Form
{
int user_oper = 0;
double first_value = 0, second_value = 0;
bool minus_used = false;
CalcClass c = new CalcClass();
private void button3_Click(object sender, EventArgs e)
{
c.dil() // Здесь само собой ошибка
}
}
}
Com зарегистрированный и прибавленный к ссилкам проекта.
Помогите новичку:)