Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “导入非托管”;QT";dll到C#给出dllNotFoundException但存在_C++_Qt_Dll_Dllimport - Fatal编程技术网

C++ “导入非托管”;QT";dll到C#给出dllNotFoundException但存在

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(不要

我正在尝试将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(不要看代码的功能,这只是为了测试目的)正常工作时的样子

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