当前位置: 代码迷 >> QT开发 >> C# 调用QT DLL有关问题
  详细解决方案

C# 调用QT DLL有关问题

热度:103   发布时间:2016-04-25 05:04:23.0
C# 调用QT DLL问题
小弟最近学习QT,需要使用C#调用QT 写的DLL,收集学习相关资料后,发现使用QTWINMIGRATE好像可以,于是模仿做了一下,但是在C#中总是出现“无法打开qtdialog.dll,找不到相应模块”的错误。DLL我是放在了C# 项目下的DEBUG中的,也罢QTCORE.DLL及其它相关的都拷贝到DEBUG下了,还是运行失败。代码如下:

QT中的

#include <qmfcapp.h>
#include <qwinwidget.h>
#include <QtGui/QMessageBox>
#include <windows.h>

BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpvReserved*/ )
{
  static bool ownApplication = FALSE;

  if ( dwReason == DLL_PROCESS_ATTACH )
ownApplication = QMfcApp::pluginInstance( hInstance );
  if ( dwReason == DLL_PROCESS_DETACH && ownApplication )
delete qApp;

  return TRUE;
}

extern "C" __declspec(dllexport) bool showDialog( HWND parent )
{
  QWinWidget win( parent );
  win.showCentered();
  QMessageBox::about( &win, "About QtMfc", "QtMfc Version 1.0\nCopyright (C) 2003" );

  return TRUE;
}

上述编译生成的是qtdialog.dll

C#中

[DllImport("qtdialog.dll")]
private static extern showDialog(IntPtr parent);


调用。

showDialog( this.Handle);



-----------

忘高手指点迷经啊~

------解决方案--------------------
debug的依赖包是qtcored4.dll的 类似的可能有qtguid4.dll
你先用c++加载下 确定依赖库都是在工作目录下 
如果c++版的没问题 再看看c#的为什么不行
  相关解决方案