我在Visual Studio 2017的一个解决方案中有2个项目。其中一个项目是C#Com Interop dll,另一个是C ++ Console应用程序。
我正在通过“ #import“ C#project /.../ bin / debug / sample.tlb”在C ++中使用C#dll。
如果我在C#项目中进行了更改并更改了COM接口(例如,添加了新功能),并且我清理并重建了C#项目,则我的c ++应用程序中看不到更改。
#import "#import "C#project/.../bin/debug/sample.tlb"
using namespace myNamespace;
int main()
{
std::cout << "Hello World!\n";
CoInitialize (0); //Initialize all COM Components
MyComApi::MyComApiInterfacePtr myPtr;
// CreateInstance parameters
// e.g. CreateInstance (<namespace::CLSID_<ClassName>)
HRESULT hRes =
myPtr.CreateInstance(__uuidof(MyComApi::MyClass));
if (hRes == S_OK)
{
char ctmp[256];
BSTR str = SysAllocStringByteLen(ctmp, 256);
try
{
myPtr->Test();
}
catch (_com_error& e)
{
LPCTSTR errMsg = e.Description();
std::cout << errMsg;
}
//std::cout << asd;
//call .NET COM exported function ShowDialog ()
}
CoUninitialize(); //DeInitialize all COM Components
}
我刚刚添加了一个名为Test()的新函数,但是Visual Studio说“ Interface没有名为TEST的成员”。
为什么?