【发布时间】:2020-07-01 21:39:32
【问题描述】:
我对 C++ 编程非常陌生。我有一个可以利用 Win32 DLL 的第 3 方应用程序。我正在处理的测试项目编译没有错误,但在使用中似乎并没有真正返回预期的数据。
使用下面的函数 Foo,期望传入的 char 数组将返回相同的值。
相反,无论在我的第 3 方应用程序中传递的数据如何,都只会看到返回值:0
我怀疑我没有正确使用指针'char *data_out'。
DemoLib.h:
#pragma once
#define DLL_EXP extern "C" __declspec(dllexport)
DLL_EXP void Foo(char* data_in, char *data_out);
DemoLib.cpp:
#include "stdafx.h"
#include "DemoLib.h"
#include <iostream>
DLL_EXP void Foo(char* data_in, char *data_out)
{
int a_size = sizeof(data_in) / sizeof(char);
std::string s_a = convertToString(data_in, a_size);
char strArray[100];
strcpy_s(strArray, s_a.c_str());
data_out = strArray;
}
std::string convertToString(char* a, int size)
{
int i;
std::string s = "";
for (i = 0; i < size; i++) {
s = s + a[i];
}
return s;
}
Exports.def:
LIBRARY DemoLib
EXPORTS
Foo @1
【问题讨论】:
-
检查
sizeof(data_in),你不能返回一个指向本地数组的指针(strArray)。函数返回时会销毁。
标签: c++