gpt4 book ai didi

c++ - 如何从 DLL 导出数组?

转载 作者:搜寻专家 更新时间:2023-10-31 01:11:09 24 4
gpt4 key购买 nike

我无法从 DLL 导出数组。这是我的代码:

"DLL 头文件"

#ifdef EXPORT
#define MYLIB __declspec(dllexport)
#else
#define MYLIB
#endif


extern "C" {
/* Allows to use file both with Visual studio and with Qt*/
#ifdef __cplusplus
MYLIB double MySum(double num1, double num2);
extern MYLIB char ImplicitDLLName[];
#else
extern Q_DECL_IMPORT char ImplicitDLLName[];
Q_DECL_IMPORT double MySum(double num1, double num2);
#endif
}

“DLL源”

 #define EXPORT
#include "MySUMoperator.h"

double MySum(double num1, double num2)
{
return num1 + num2;
}

char ImplicitDLLName[] = "MySUMOperator";

“客户端main.cpp”

int main(int argc, char** argv)
{
printf("%s", ImplicitDLLName);
}

构建时我从链接器收到此错误:

Error   2   error LNK2001: unresolved external symbol _ImplicitDLLName  \Client\main.obj

//我导出数组的目的是研究从DLL导出不同的数据结构

如何处理链接器抛出的错误,违反了哪些规则?

*更新:*IDE Visual Studio 2010。
客户端 - 用 C++ 编写,DLL 也在 C++ 上

最佳答案

假设您正确地链接了您的导入库(这是一个很大的假设),您没有为导入符号正确声明 MYLIB:

这个:

#ifdef EXPORT
#define MYLIB __declspec(dllexport)
#else
#define MYLIB
#endif

应该是这样的:

#ifdef EXPORT
#define MYLIB __declspec(dllexport)
#else
#define MYLIB __declspec(dllimport)
#endif

请记住,我们几乎没有工作背景。 看起来您正试图从 C 编译的应用程序中使用它,但没有更多信息我不能确定。如果是这种情况,那么 Q_DECL_IMPORT 最好执行上述操作,否则它仍然不起作用。我将从基本的“C”链接导出开始,然后从那里开始。


EXPORTS.DLL 示例

导出.h

#ifdef EXPORTS_EXPORTS
#define EXPORTS_API __declspec(dllexport)
#else
#define EXPORTS_API __declspec(dllimport)
#endif

extern "C" EXPORTS_API char szExported[];

导出.cpp

#include "stdafx.h"
#include "Exports.h"

// This is an example of an exported variable
EXPORTS_API char szExported[] = "Exported from our DLL";

示例 EXPORTSCLIENT.EXE

ExportsClient.cpp

#include "stdafx.h"
#include <iostream>
#include "Exports.h"
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
cout << szExported << endl;
return 0;
}

输出

Exported from our DLL

关于c++ - 如何从 DLL 导出数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15199806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com