我是C ++的初学者,厌倦了从dll到exe的数据传输过程中遇到的错误。
问题: 我有一个exe,其中我捆绑了一个DLL ...现在exe想要启动dll从Active Directory获取一些数据..这是通过使用从exe到DLL的函数指针调用来执行的。现在,dll从中获取数据AD和每当它达到限制(100个数据)时,它应该去exe打印这个数据(只有我需要执行这个数据打印)...并且它应该再次返回到dll并继续获取数据, ,
如何将数据从dll传输到exe ... ???????????
仅供参考:我曾尝试使用Structure和一个exe和dll共同的类... 但内存清理过程崩溃我的程序,因为dll和exe的堆是不同的..我在dll中给出的数据试图在exe中清理...(这是一个不同的主题,这需要更多的解释。 ..并且为了不浪费你宝贵的时间,请帮助我用最简单的方法将数据从dll传输到exe)
由于我的组织限制,我无法发布我的计划。请给我一个更好的解决方案...
答案 0 :(得分:0)
你可以在exe中分配一个内存块,将地址传递给dll,dll可以将数据填入内存,然后你可以在exe中释放缓冲区。
在您的dll中,您可以导出如下界面:
void fill_buffer( char * p_buff, int buff_size );
在你的exe中,你可以分配一个缓冲区并将它传递给dll,然后清理它:
char * the_buff = new char[1024];
while (...) {
fill_buffer( the_buff, 1024 );
//do something to the_buff
print(the_buff)
}
delete []the_buff;
当你在dll和exe之间传递结构或类时,要小心字节对齐应该是一致的。
对于你的问题,也许你可以粘贴一些假代码,然后你的问题会更清楚。