小弟最近学习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#的为什么不行