我如何在dll中编写函数的主体,但在我的主程序中具有原型,

问题描述 投票:0回答:1

很抱歉,如果这个问题很基本,我是.dll-s的新手。基本上,我想让我的函数能够访问与最初在定义为.dll的主程序中所做的相同的全局变量]

示例:我有一个ListView对象,我将从函数内向其中打印消息

void example(){
//Display is my listview
Display->Items->Add("Hello world");
}

在此示例中,Display是一个TListView对象,该对象在我的main.cpp中被初始化,从中可以定义VCL应用程序表单的行为。该显示对象是主cpp中的全局变量,因此,当我剪切example()并将其粘贴到新的dll中时,它会中断,因为在dll范围内不存在显示,所以它会中断。

我的想法是声明函数原型void example();在main.h和SOMEHOW中将主体写入我的dll中,但是当我在dll中包含时,编译器将发出尖叫声,它使我想做什么...]]

我有什么选择?

我使用的是c ++ Builder,但我认为相同的逻辑问题将适用于任何IDE

很抱歉,如果这个问题很基本,我是.dll-s的新手。基本上,我想让我的函数能够访问它最初在while ...

c++ dll c++builder dllimport dllexport
1个回答
0
投票

您正在解决所有这些错误。 DLL无法访问它外部的变量,例如在主EXE中,除非外部代码为它们提供了DLL指针/引用。

更好的设计是完全不让DLL直接访问变量。在您的示例中,您应该使EXE传递指向DLL的callback function

© www.soinside.com 2019 - 2024. All rights reserved.