gpt4 book ai didi

c++ - 尝试测试 dll 时出现 LNK2019 错误

转载 作者:行者123 更新时间:2023-11-30 17:30:05 28 4
gpt4 key购买 nike

我使用的应用程序(几周前才开始,所以我仍在学习旧的应用程序)是用 C 构建的,我的公司希望使用该程序的能力来调用外部 DLL扩展一些新功能。为此,我开始研究 POC,即下面的前两个文件。我们得到的唯一规范是 dll 必须导出以下函数:extern int __stdcall TestMethod_LoadCustomer(const char * name, char * id);我尝试按如下方式实现:

TestDLL.h

#define TestDLL_API __declspec(dllexport)
namespace TestDLL
{
class TestDLL
{
public:
static TestDLL_API int TestMethod_LoadCustomer(const char* name, char* id);
};
}

TestDLL.cpp

// TestDLL.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include "TestDLL.h"
#include <string.h>

extern "C" int __declspec(dllexport) __stdcall TestMethod_LoadCustomer(const char* name, char* id)
{
if (strlen(name) <= 8) {
strcpy(id, name); // name contains customer id
} else {
id[0] = 0; // Customer not found
}
return 0;
}

这两个文件编译良好。当我尝试通过此处所示的单独的小控制台应用程序测试此 dll 时,问题就出现了:运行测试.cpp

// RunTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include "TestDLL.h"

using namespace std;
int _tmain()
{
char* id= "";
TestDLL::TestDLL::TestMethod_LoadCustomer("77777", id);
cout << id;
cin >> id;
return 0;
}

我所寻找的只是能够将字符串传递到调用 TestMethod_LoadCustomer() 中并将其添加到 id 字段。

当我实际尝试构建此解决方案时,出现以下错误:

“错误 LNK2019:无法解析的外部符号“public: static int __cdecl TestDLL::TestDLL::TestMethod_LoadCustomer(char const *, char *)”(?TestMethod_LoadCustomer@TestDLL@1@SAHPBDAD@Z) 在函数 _wmain 中引用”

我假设它与我尝试在客户端应用程序中引用它的方式有关,但我不确定。我在 StackOverflow 上查看了其他 LNK2019 错误,但这些解决方案似乎都不起作用,因为我错误地实现了它们。任何人都可以帮助我消除此错误消息吗?

最佳答案

TestDLL.cpp 文件中缺少两件事:

1) 命名空间 TestDLL。

2) TestDLL::位于方法名称之前。

// TestDLL.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include "TestDLL.h"
#include <string.h>

namespace TestDLL {
extern "C" int __declspec(dllexport) __stdcall TestDLL::TestMethod_LoadCustomer(const char* name, char* id)
{
if (strlen(name) <= 8) {
strcpy(id, name); // name contains customer id
} else {
id[0] = 0; // Customer not found
}
return 0;
}
}

关于c++ - 尝试测试 dll 时出现 LNK2019 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25292063/

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