- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将一个 dll 导入到 C# 控制台应用程序,只是为了看看我是否可以让一个 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;
}
2 - 当我尝试使用一些 QT 代码添加帮助函数时,只是一个普通的 QString DllImport 开始抛出 dllNotFoundException.dumpbin.exe 在包含 qt 代码之后显示所有导出的函数......
main.cpp dllNotFoundException
#include <QString>
using namespace std;
class testa
{
public:
static char* test()
{
QString a = "hejsan";
return qString2Char(a);
}
static char* qString2Char(QString a)
{
return a.toUtf8().data();
}
};
这是从 getText() 函数调用的,如下所示:
string returnBufferString;
extern "C" __declspec(dllexport) const char* getText()
{
returnBufferString = testa::test();
return returnBufferString.c_str();
}
当我尝试从 DllImport 访问 dll 时,我在第二部分得到了 dllNotFoundException。我该如何解决这个问题?我错过了任何依赖项或任何东西吗?我的 dll 是使用 msvc2010 编译器构建的,.pro 文件如下所示:
cDLL.pro
TEMPLATE = lib
CONFIG += dll
QT += core
# Input
SOURCES += main.cpp
我卡住了...
最佳答案
它不会告诉您它找不到的确切什么 DLL。这几乎肯定不是您的 DLL,它是QT 需要的DLL 之一。您还必须将它们复制到 EXE 文件夹中。如果您不知道并且无法在诺基亚文档中找到它,那么您可以使用 SysInternals 的 ProcMon 实用程序找到它。
但是,在这种情况下,您肯定希望将 QT 链接到您的 DLL 中,因为可以共享这些 DLL 的可能性很小。使用这个 SO question获取有关设置 QT 项目的指导。
关于c++ - 将非托管 "QT"dll 导入 C# 给出 dllNotFoundException 但存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11760819/
我在某些 Windows 机器上的独立构建中遇到 DLLNotFoundException,其他机器则运行良好。 Dll文件肯定在plugins文件夹中,也将其复制到projectName_Data文
我正在尝试使用 ZeroMQ C# 绑定(bind) ( http://www.zeromq.org/bindings:clr ) 与我在 Unity 中创建的游戏的服务器进行通信(我使用的是 Mac
我正在尝试在我的统一项目中使用一个 Assets ,它有一个 c# script.cs,它在游戏开始时调用并初始化插件。但是当我按下播放按钮时,unity 不断抛出 DllNotFoundExcept
我的 WPF 应用程序运行良好,但当我将它部署为 ClickOnce 应用程序时,它甚至无法启动。但在 Windows 事件查看器中抛出了以下异常: Application: Saito ERC-C.
我正在尝试在 EmguCV 3.1 中运行 LicensePlateRecognition 示例。但我总是收到错误 System.DllNotFoundException 并且消息是“无法加载 cve
我卸载了 Xamarin Studio(因为 xamarin 是免费的)并尝试在 VS 上运行我的应用程序,但收到此错误: System.DllNotFoundException: java-inte
我已经安装了版本1,1,1的Microsoft.Data.Sqlite Nuget包(因为我有Visual Studio 2015并且不支持2.0.0)。在 x86 和 x64 中一切正常,但问题出现
每当我的应用程序尝试使用 DLL 中存在的函数时,我会收到一个 .dll 的 System.DllNotFoundException,它与可执行文件位于同一文件夹中。奇怪的是,它只发生在一个用户的 P
我是 MonoDevelop 工具的新手。请有人帮忙解决这个问题。 当我尝试连接到 MySql DB 时收到此错误(但是我可以通过终端进行连接)。我在 ubundu 14.4 上运行 mono。 Sy
我正在尝试运行从中导入的 Assets https://www.assetstore.unity3d.com/en/#!/content/10693 它在 windows 中运行良好,但我在 Linu
我在我的 Windows 窗体应用程序中集成了 Geckofx45.64 - 在某些 Windows10 发行版上,我在启动后立即收到以下错误: System.DllNotFoundException
当我们在程序中加载 DLL 时出现以下错误并抛出以下错误: Unable to load DLL 'xxx.dll': The specified procedure could not be fou
这是我第一次尝试为 Android/iOS 创建一个库 c++。 我正在使用 Visual Studio 2015 - Xamarin。 首先我创建了一个项目:Visual C++ -> 跨平台 ->
我在尝试从我的应用程序(用 C# 框架 4.0 编写)中使用非托管代码 dll 时遇到了一些困难。我正在使用 dll 导入如下 [DllImport(@"C:\MGW_SDK.dll", EntryP
我正在使用 Monodevelop 并且有一个 C# 主程序调用一个用 C 编写的共享对象文件。解决方案构建成功,但是当我尝试运行它时,我得到上面的 System.DllNotfoundExcepti
所以我使用了一个用于硬件随机数生成器的 SDK,它提供了一个名为 PsyREG.dll 的 dll 用于与其交互,以及一些用于使用 dll 中的方法的 c# 源代码。 它在过去有效,但不知何故它已停止
我能够在我的开发箱上构建和执行我的 Winforms 应用程序,但是当我尝试在另一个干净的箱子(虚拟机)上运行我的应用程序时,我遇到了这个错误。 Application: MyApp.exe Fram
我是 Unix/Linux/Ubuntu 的新手。 我正在将 Mono 与 VB 一起使用,我正在尝试通过 DllImport (CliSiTef32I.dll/libclisitef.so) 使用库
当尝试将单声道应用程序捆绑在 snap 包中时,当应用程序尝试发出简单的 HTTP 请求时,我会收到此异常: System.AggregateException: One or more errors
我使用 ARFoundation 包在 Unity 中构建了一个 ARCore 应用程序。然后我按照以下链接中的说明将 Unity 应用程序嵌入到原生 Android 应用程序中:Embedded U
我是一名优秀的程序员,十分优秀!