提问人:Joe S 提问时间:10/20/2014 最后编辑:Joe S 更新时间:10/20/2014 访问量:198
如何在DLL中创建具有变量参数的非成员函数?
How can I create a non-member function with variable arguments in a DLL?
问:
我正在我的 DLL 中编写我自己的 String 类,我希望能够像 printf/etc 那样格式化文本,但无论我如何尝试实现这一点,当我尝试链接我的 DLL 时,我都会在我的函数上得到带有省略号的“未解析的外部符号”,尽管它们已经定义。我尝试在我的 String 类中将字符串格式化程序实现为构造函数,如下所示:
class DLLEXP String
{
public:
String();
String(const String &other);
String(const String &format, ...);
// more member funcs
}
我还尝试在单独的类 StringFormat 中将其实现为构造函数:
class DLLEXP StringFormat
{
public:
StringFormat();
StringFormat(const StringFormat &other);
StringFormat(const String &format, ...);
};
class DLLEXP String
{
public:
String();
String(const String &other);
String(const StringFormat &format);
// more member funcs
};
我也尝试过常规功能:
DLLEXP String StringFormat(const String &format, ...);
甚至:
DLLEXP char* __cdecl StringFormat(const char *format, ...);
从DLL正确导入变量参数函数是否有某种秘密,或者这在Windows上根本不可能?一旦我删除省略号,上述每个函数都可以完美运行......但我需要那些。此外,这些函数在 Linux 上的共享库中也能正常工作。我已经为此扯了几个小时的头发,所以非常感谢任何帮助。
提前致谢
答: 暂无答案
评论
va_list
sprintf
vsprintf