C++ “导入非托管”;QT";dll到C#给出dllNotFoundException但存在
我正在尝试将dll导入C#console应用程序,只是想看看是否可以让dll正常工作。尝试此操作并使用C代码导出函数时,一切正常,并且可以在我的C#应用程序中导入函数 当我尝试向非托管dll中的某些QT方法添加某种链接时,问题就出现了。我正在使用DllImport从dll导入函数C++ “导入非托管”;QT";dll到C#给出dllNotFoundException但存在,c++,qt,dll,dllimport,C++,Qt,Dll,Dllimport,我正在尝试将dll导入C#console应用程序,只是想看看是否可以让dll正常工作。尝试此操作并使用C代码导出函数时,一切正常,并且可以在我的C#应用程序中导入函数 当我尝试向非托管dll中的某些QT方法添加某种链接时,问题就出现了。我正在使用DllImport从dll导入函数 [DllImport("cDLL.dll", EntryPoint = "_Add@16")] static extern double Add(double a, double b); 1-这就是非托管dll(不要
[DllImport("cDLL.dll", EntryPoint = "_Add@16")]
static extern double Add(double a, double b);
1-这就是非托管dll(不要看代码的功能,这只是为了测试目的)正常工作时的样子
main.cpp工作模式
#include <stdexcept>
#include "Windows.h"
using namespace std;
extern "C" __declspec(dllexport) double __stdcall Add(double a, double b)
{
return a + b;
}
extern "C" __declspec(dllexport) const char* getText()
{
return "hello world";//returnBufferString.c_str();
}
BOOL __stdcall DllMain(HINSTANCE hInst, DWORD dwReason, LPVOID lpReserved) {
return TRUE;
}
当我尝试从DllImport访问dll时,我在第2部分得到dllNotFoundException。我如何解决这个问题?我是否遗漏了任何依赖项或任何东西。我的dll是使用msvc2010编译器生成的,.pro文件如下所示:
string returnBufferString;
extern "C" __declspec(dllexport) const char* getText()
{
returnBufferString = testa::test();
return returnBufferString.c_str();
}
cDLL.pro
TEMPLATE = lib
CONFIG += dll
QT += core
# Input
SOURCES += main.cpp
我被卡住了…您需要将DLL与可执行文件放在同一文件夹中
请参见它不会确切地告诉您它找不到的DLL。这几乎肯定不是你的DLL,它是QT需要的DLL之一。您还必须将它们复制到EXE文件夹。如果您不知道,并且在诺基亚文档中找不到,那么您可以使用SysInternals的ProcMon实用程序查找 然而,在这种情况下,您肯定希望将QT链接到DLL中,因为这些DLL可以共享的可能性很小。在设置QT项目时使用此指南
TEMPLATE = lib
CONFIG += dll
QT += core
# Input
SOURCES += main.cpp