在C++中使用带有DLoad RealSub()方法的库DLL
我可以使用LoadLibrary方法导入struct类型的数据吗?? 请原谅我的英语。在C++中使用带有DLoad RealSub()方法的库DLL,c++,winapi,C++,Winapi,我可以使用LoadLibrary方法导入struct类型的数据吗?? 请原谅我的英语。 谢谢。嗯。。。恐怕那个问题有点难理解 在C++中,结构声明就是声明。它不会生成您可以在运行时加载的内容,它是一个纯编译时结构,只告诉编译器内存中的内容布局、涉及的字段、它们的类型和顺序等等。。。恐怕那个问题有点难理解 在C++中,结构声明就是声明。它不会生成您可以在运行时加载的内容,它是一个纯编译时结构,只告诉编译器内存中的内容布局、涉及的字段、它们的类型和顺序等等。我假设您使用的是VC++2005 MS现在
谢谢。嗯。。。恐怕那个问题有点难理解
<>在C++中,结构声明就是声明。它不会生成您可以在运行时加载的内容,它是一个纯编译时结构,只告诉编译器内存中的内容布局、涉及的字段、它们的类型和顺序等等。。。恐怕那个问题有点难理解
<>在C++中,结构声明就是声明。它不会生成您可以在运行时加载的内容,它是一个纯编译时结构,只告诉编译器内存中的内容布局、涉及的字段、它们的类型和顺序等等。我假设您使用的是VC++2005 MS现在提供给您
Visual C++链接器支持DLL的延迟加载。这使您无需使用Windows SDK函数LoadLibrary和GetProcAddress来实现DLL延迟加载
设置延迟负载所需遵循的步骤转到Project->Properties->Linker->Input,然后在“延迟加载的Dll”中指定Dll我假设您使用的是VC++2005 MS现在提供给您
Visual C++链接器支持DLL的延迟加载。这使您无需使用Windows SDK函数LoadLibrary和GetProcAddress来实现DLL延迟加载
设置延迟负载所需遵循的步骤转到Project->Properties->Linker->Input,然后在“延迟加载的Dll”中指定Dll您的意思是将数据放入Dll,并使用LoadLibrary和Getprocaddres获取指向数据的指针吗?这是可能的,尽管更常见的做法是将函数放在dll中,并让它们返回指向数据的指针。您的意思是将数据放在dll中,并使用LoadLibrary和Getprocaddres获取指向数据的指针吗?这是可能的,尽管更常见的做法是将函数放在dll中,并让它们返回指向数据的指针。让我假设问题中遗漏了一些内容: 您有一个名为flubber.dll的动态库 库导出函数bool GetFlubberFlubber*flubber。 函数和类型Flubber正好是一个struct!在名为flubber.h的头文件中声明。
如果这3个条件都满足,那么您可以在flubber.dll上使用LoadLibrary,然后使用GetProcAddress,GetFlubber作为proc名称,最后您可以在本地声明一个flubber实例,并通过检索到的proc地址将其传递给GetFlubber。让我假设问题中遗漏了一些内容: 您有一个名为flubber.dll的动态库 库导出函数bool GetFlubberFlubber*flubber。 函数和类型Flubber正好是一个struct!在名为flubber.h的头文件中声明。
如果这三个条件都满足,那么您可以在flubber.dll上使用LoadLibrary,然后使用GetProcAddress,GetFlubber作为proc名称,最后您可以在本地声明一个flubber实例,并通过检索到的proc地址将其传递给GetFlubber。因为其他响应表明,很难判断这里询问了什么,但我会对这个问题的另一种解释做出回应。我不确定它是否得到官方支持,但您可以让DLL导出一个全局变量,然后通过GetProcAddress动态访问它 例如,如果名为foo.dll的库包含名为g_MyGlobal的foo类型的全局变量,则它可以在foo.def中导出该变量。然后,客户端代码可以调用:
MyPointer = GetProcAddress(..., "g_MyGlobal");
并获取指向全局的FOO*指针
…但是,尽管如此,如果您发现自己需要出于私人测试目的以外的其他目的进行此操作,您可能需要重新思考您的设计。将这个全局函数隐藏在DLL中导出的函数后面可能会更安全、更干净。因为其他回答表明,很难说出这里要问什么,但我将给出一个回答,以获得对这个问题的另一种解释。我不确定它是否得到官方支持,但您可以让DLL导出一个全局变量,然后通过GetProcAddress动态访问它 例如,如果名为foo.dll的库包含名为g_MyGlobal的foo类型的全局变量,则它可以在foo.def中导出该变量。然后,客户端代码可以调用:
MyPointer = GetProcAddress(..., "g_MyGlobal");
并获取指向全局的FOO*指针
…但是,尽管如此,如果您发现自己需要出于私人测试目的以外的其他目的进行此操作,您可能需要重新思考您的设计。将此全局函数隐藏在DLL中导出的函数后面可能会更安全、更干净。如果他想根据版本控制和可用性动态加载库,则必须仍然使用LoadLibrary。如果他想根据版本动态加载库 加载和可用性,则必须仍然使用LoadLibrary。