私は現在保留中の質問を開いていました-しかし、それに取り組んだ後、私は新しい問題に遭遇し、それを構築しようとしたときに私が得たエラーは次のとおりでした:
Error 1 error C2695: 'MyEventsSink::OnSomethingHappened': overriding virtual function differs from 'Library::IEventsSink::OnSomethingHappened' only by calling convention
Error 2 error C2695: 'MyEventsSink::SomeTest': overriding virtual function differs from 'Library::IEventsSink::SomeTest' only by calling convention
このエラーについてゴーグルを試みましたが、理解できませんでした。
これが私がしていることです。ネイティブC++アプリケーションによって消費されているマネージドC#dllクラスライブラリがあります。C#インターフェイスのコードは次のとおりであり、このインターフェイスの実装はC++で行われます。
C#コードは
[ComVisible(true), ClassInterface(ClassInterfaceType.None), Guid("fdb9e334-fae4-4ff5-ab16-d874a910ec3c")]
public class IEventsSinkImpl : IEventsSink
{
public void OnSomethingHappened()
{
//Doesnt matter what goes on here - atleast for now
}
public void SomeTest(IEventsSink snk)
{
//When this is called - it will call the C++ code
snk.OnSomethingHappened();
}
}//end method
そして、C++でのその実装コードは
class MyEventsSink : public Library::IEventsSink
{
public:
MyEventsSink() {}
~MyEventsSink() {}
virtual HRESULT OnSomethingHappened()
{
std::cout << "Incredible - it worked";
}
virtual HRESULT SomeTest(IEventsSink* snk)
{
//Doesnt matter this wont be called
}
};
どうやらビルドプロセス中にVS2010は上記のエラーについて不平を言っています。これらのエラーを解決する方法についての提案。