cpp / cli interop dll在visual studio 2015中断

时间:2016-05-19 18:39:24

标签: c++-cli

我已经被分配了使用v140工具集将旧的interop dll升级到visualstudio2015的任务。

我现在收到了一个奇怪的访问冲突。

  

HostApp.exe中的0x000007fef7d3d95c(mscoreei.dll)抛出异常:   0xC0000005:访问冲突读取位置0xffffffffffffffff

cpp / cli从v110到v140有什么变化吗?

我可以告诉当方法在单独的cpp中定义而不是4 中的内联时,会发生错误。这种解决办法是不可能的,因为这是我需要调用托管对象的地方。

这是我尝试重建代码的大纲:

共享标头IFoo.h

Foo.h

foo.h中

#ifdef DLL_EXPORTS
#define __API__ __declspec(dllexport)
#else
#define __API__ __declspec(dllimport)
#endif

class IFoo
{
  public:
    __API__ static IFoo* Create();

    virtual void DoSomething()=0;
 };

Foo.cpp中

#include IFoo.h
class Foo : public IFoo
{
  public:
    Foo() { } // if inline no crash

    void DoSomething();
 };

FooImpl.cpp

 #include ManagedStuff.h
 #include Foo.h

 // Foo::Foo() { } // AV if not inline.

 void Foo::DoSomething()
 {
      gcroot<ManagedClass^> stuff = gcnew ManagedClass();
      .....
 }

0 个答案:

没有答案