从 Win32 控制台应用程序调用 dll [C]

鲁本

大家好,感谢您的时间。这是在 Visual Studio 2012 中创建的,我使用的是标准的 Windows 库。

我正在尝试显式调用 DLL 函数,并且我相信我编写的代码是正确的;但是,我收到一个错误。我不确定这是我在小型 C 控制台应用程序中编写的内容还是从我无法访问其内部工作的 DLL 中编写的错误。

//global area

HINSTANCE _createInstance;
typedef UINT (CALLBACK* LPFNDLLFUNCLOOKUP)(AccuInput*, AccuOut*);
LPFNDLLFUNCLOOKUP lpfnDllFuncCASSLookup;
typedef UINT (CALLBACK* LPFNDLLFUNCINIT)(BSTR);
LPFNDLLFUNCINIT lpfnDllFuncInit;
typedef UINT (CALLBACK* LPFNDLLFUNCCLOSE)(); 
LPFNDLLFUNCCLOSE lpfnDllFuncClose;
HMODULE unmanagedLib;

这是我的主要功能:

int main() {

// Load Library
BSTR configFile;
unmanagedLib = LoadLibraryA((LPCSTR) "AccuAddressUnMgd.dll");
// Initialize AccuAddress COM dll
lpfnDllFuncInit = (LPFNDLLFUNCINIT)GetProcAddress(unmanagedLib, (LPCSTR)"Init");
// This function will lookup the address
lpfnDllFuncCASSLookup = (LPFNDLLFUNCLOOKUP)GetProcAddress(unmanagedLib, (LPCSTR)"AccuCassLookup");
// This function will call AccuAddress COM DLL Close function
lpfnDllFuncClose = (LPFNDLLFUNCCLOSE)GetProcAddress(unmanagedLib, (LPCSTR)"Close");
// Append “config.acu” file path.
configFile = SysAllocString(L"C:\PathTo\Config.acu");
printf("ConfigPath created");
lpfnDllFuncInit(configFile);
printf("ConfigFile consumed");
SysFreeString(configFile);
return 0;
}

这是我收到的错误:

Unhandled exception at at 0x75D4C54F in RDISample1.exe: Microsoft C++ exception: _com_error at memory location 0x001AFAC0.

错误发生在:

lpfnDllFuncInit(configFile);

所以,我想我的问题有两个部分。基于代码,我可以说错误出在 DLL 函数中吗?

第二个问题,当调用GetProcAddress 时,将字符串封装在LPCSTR 中(如函数与类型转换)有何意义(如果有)IE

lpfnDllFuncClose = (LPFNDLLFUNCCLOSE)GetProcAddress(unmanagedLib, LPCSTR("Close"));

再次感谢您的帮助。我一直在做大量的研究,但 DLL 仍然很困惑。

蒂布罗加根

初始错误是由您使用的库未能正确处理不存在的文件引起的。

您提供的路径包含单斜杠\,它们被视为转义字符,而不是路径分隔符。路径分隔符必须转义,即\\正确处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 win32 控制台应用程序中使用 ntdll.dll 好不好?

来自分类Dev

C#程序AccessViolationException中的Win32 DLL

来自分类Dev

JNI C ++ DLL-'UnsatisfiedLinkError:%1不是有效的Win32应用程序'

来自分类Dev

在通用 Windows 应用程序 C++ 上使用 win32 DLL 库

来自分类Dev

Win32控制台写入(C / C ++)

来自分类Dev

将DOS应用程序转换为Win32控制台应用程序?

来自分类Dev

将DOS应用程序转换为Win32控制台应用程序?

来自分类Dev

C ++-Win32 DLL中的LoadString()无法正常工作

来自分类Dev

使用VS2010将Linux C ++控制台应用程序带到Win32 C ++应用程序,并且<algorithm>中的搜索功能不再起作用

来自分类Dev

C#应用程序中的Win32异常

来自分类Dev

如何从powerbuilder11.5调用win32 dll?

来自分类Dev

从Win32 dll调用.Net内置类

来自分类Dev

无法在VS 2013,Windows 8.1中创建Win32控制台应用程序

来自分类Dev

可以打开Windows的Win32控制台应用程序

来自分类Dev

在Win32控制台应用程序中显示弹出窗口

来自分类Dev

可以打开Windows的Win32控制台应用程序

来自分类Dev

WiFiDirectDevice :: FromIdAsync引发Win32控制台应用程序

来自分类Dev

在 UWP 中启动后台 win32 控制台应用程序

来自分类Dev

使用C#控制台应用程序互操作C ++(DLL)时出现问题

来自分类Dev

DLL加载失败:%1不是有效的Win32应用程序-Appcelerator

来自分类Dev

在python中加载DLL时出错,不是有效的Win32应用程序

来自分类Dev

'matplotlib'ImportError:DLL加载失败:%1不是有效的Win32应用程序

来自分类Dev

DLL加载失败-不是有效的Win32应用程序-使用NumPy

来自分类Dev

Python:DLL加载失败:%1不是有效的Win32应用程序

来自分类Dev

DLL加载失败:%1不是有效的Win32应用程序-Appcelerator

来自分类Dev

DLL加载失败-不是有效的Win32应用程序-使用NumPy

来自分类Dev

如何制作不依赖于msvc dll的Win32应用程序?

来自分类Dev

为什么不能创建新的Win32控制台Visual C ++?

来自分类Dev

GCC编译的Win32程序在系统DLL调用期间崩溃

Related 相关文章

  1. 1

    在 win32 控制台应用程序中使用 ntdll.dll 好不好?

  2. 2

    C#程序AccessViolationException中的Win32 DLL

  3. 3

    JNI C ++ DLL-'UnsatisfiedLinkError:%1不是有效的Win32应用程序'

  4. 4

    在通用 Windows 应用程序 C++ 上使用 win32 DLL 库

  5. 5

    Win32控制台写入(C / C ++)

  6. 6

    将DOS应用程序转换为Win32控制台应用程序?

  7. 7

    将DOS应用程序转换为Win32控制台应用程序?

  8. 8

    C ++-Win32 DLL中的LoadString()无法正常工作

  9. 9

    使用VS2010将Linux C ++控制台应用程序带到Win32 C ++应用程序,并且<algorithm>中的搜索功能不再起作用

  10. 10

    C#应用程序中的Win32异常

  11. 11

    如何从powerbuilder11.5调用win32 dll?

  12. 12

    从Win32 dll调用.Net内置类

  13. 13

    无法在VS 2013,Windows 8.1中创建Win32控制台应用程序

  14. 14

    可以打开Windows的Win32控制台应用程序

  15. 15

    在Win32控制台应用程序中显示弹出窗口

  16. 16

    可以打开Windows的Win32控制台应用程序

  17. 17

    WiFiDirectDevice :: FromIdAsync引发Win32控制台应用程序

  18. 18

    在 UWP 中启动后台 win32 控制台应用程序

  19. 19

    使用C#控制台应用程序互操作C ++(DLL)时出现问题

  20. 20

    DLL加载失败:%1不是有效的Win32应用程序-Appcelerator

  21. 21

    在python中加载DLL时出错,不是有效的Win32应用程序

  22. 22

    'matplotlib'ImportError:DLL加载失败:%1不是有效的Win32应用程序

  23. 23

    DLL加载失败-不是有效的Win32应用程序-使用NumPy

  24. 24

    Python:DLL加载失败:%1不是有效的Win32应用程序

  25. 25

    DLL加载失败:%1不是有效的Win32应用程序-Appcelerator

  26. 26

    DLL加载失败-不是有效的Win32应用程序-使用NumPy

  27. 27

    如何制作不依赖于msvc dll的Win32应用程序?

  28. 28

    为什么不能创建新的Win32控制台Visual C ++?

  29. 29

    GCC编译的Win32程序在系统DLL调用期间崩溃

热门标签

归档