C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了无法从C应用程序访问C DLL中的变量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我坚持修复传统的Visual C 6应用程序.在我放的C DLL源代码
extern "C" _declspec(dllexport) char* MyNewVariable = 0;

这导致MyNewVariable在导出表显示(很好地未修饰)(如dumpbin / exports blah.dll所示).但是,我无法弄清楚如何声明变量,以便我可以在C源文件中访问它.我尝试过各种各样的东西,包括

_declspec(dllimport) char* MyNewVariable;

但这只是给我一个链接错误

未解析的外部符号“__declspec(dllimport)char * MyNewVariable”(__ imp_?MyNewVariable @@ 3PADA)

extern "C" _declspec(dllimport) char* MyNewVariable;

正如Tony所建议的(以及我之前尝试过的)会产生不同的预期装饰,但仍然没有将其删除

未解析的外部符号__imp__MyNewVariable

如何编写声明,以便可以从C应用程序访问C DLL变量?

答案

由botismarius和其他人确认(非常感谢所有),我需要链接DLL的.lib.为了防止名称被破坏,我需要声明它(在C源代码中)没有装饰器,这意味着我需要使用.lib文件.

解决方法

你必须链接编译DLL后生成的lib.在项目的链接器选项中,必须添加.lib文件.是的,你还应该将变量声明为:
extern "C" { declspec(dllimport) char MyNewVariable; }

大佬总结

以上是大佬教程为你收集整理的无法从C应用程序访问C DLL中的变量全部内容,希望文章能够帮你解决无法从C应用程序访问C DLL中的变量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。