gpt4 book ai didi

c++:不允许定义 dllimport 函数,使用 visual studio 2010 构建

转载 作者:可可西里 更新时间:2023-11-01 17:37:08 31 4
gpt4 key购买 nike

我正在使用 visual studio 2010 构建 .dll。我写了一个试验:

// trialDLL.h
#ifndef TRIALDLL_H_
#define TRIALDLL_H_

// ... MyMathFuncs class definition omitted

#ifdef __cplusplus
extern "C"{
#endif

#ifdef TRIALDLL_EXPORT
#define TRIALDLL_API __declspec(dllexport)
#else
#define TRIALDLL_API __declspec(dllimport)
#endif

TRIALDLL_API MyMathFuncs* __stdcall new_MyMathFuncs(double offset);
TRIALDLL_API void __stdcall del_MyMathFuncs(MyMathFuncs *myMath);
TRIALDLL_API double __stdcall MyAdd(MyMathFuncs* myMath, double a, double b);
// some other similar stuff

#ifdef __cplusplus
}
#endif

#endif

还有 triallDLL.cpp 文件:

// trialDLL.cpp
#include "trialDLL.h"

TRIALDLL_API MyMathFuncs* __stdcall new_MyMathFuncs(double offset)
{
return new MyMathFuncs(offset);
}

TRIALDLL_API void __stdcall del_MyMathFuncs(MyMathFuncs *myMath)
{
delete myMath;
}

TRIALDLL_API double __stdcall MyAdd(MyMathFuncs *myMath, double a, double b)
{
return myMath->Add(a, b);
}
// ... some other definitions

项目中有了这两个文件,我通过visual studio 2010 property manager给项目添加了一个property sheet,并在user macros中添加了TRIALDLL_EXPORT。在所有这些之后,漂亮的 Intellisense 为 .cpp 文件中定义的每个函数都给出了错误,并提示“错误:可能未定义声明为‘dllimport’的函数”。所以看起来 Intellisense 没有找到定义的 TRIALDLL_EXPORT。我认为如果我实际构建项目可能会有所不同,但结果提示相同的错误:“错误 C2491:'new_MyMathFuncs':不允许定义 dllimport 函数”。那么很明显,编译时仍然没有定义宏TRIALDLL_EXPORT

在通过 visual studio 添加宏失败后,我也尝试将代码行:#define TRIALDLL_EXPORT 放在 trialDLL.cpp 中,但它也没有帮助。我想知道这样做的正确方法是什么?我如何通知编译器定义了 micro,以便 TRIALDLL_API 计算为 dllexport 而不是 dllimport

另外,如果我可以成功构建.dll,是否有任何系统的方法来测试/验证.dll 的功能?

提前感谢您的帮助! (虽然我知道在 stackoverflow 上对这个问题表示赞赏是一个问题,但我觉得不这样做是不礼貌的。请原谅我因这些行造成的任何低效率。)

最佳答案

VS 属性表中的“用户宏”与预处理器宏无关。将 TRIALDLL_EXPORT 放入属性表的部分 C/C++ > Preprocessor > Preprocessor Definitions

只能在属性表中定义的“用户宏”允许您创建自己的可在 Visual Studio 属性中使用的“变量”,类似于内置的 $(TargetName) , $(SolutionDir)

关于c++:不允许定义 dllimport 函数,使用 visual studio 2010 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17239506/

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