• 导出DLLRegisterServer接口遇到的问题


    I'm trying to add DLLRegisterServer and DLLUnregisterServer entry points to an existing DLL that is exporting other functions. I have the olectl.h header included and here is the code I'm using to export the functions

    EXTERN_C _declspec(dllexport) HRESULT STDAPICALLTYPE DllRegisterServer(void);
    EXTERN_C _declspec(dllexport) HRESULT STDAPICALLTYPE DllUnregisterServer(void);

    And here are the errors I get:
    1> : error C2375: 'DllRegisterServer' : redefinition; different linkage
    1>        C:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludeolectl.h(419) : see declaration of 'DllRegisterServer'
    1> : error C2375: 'DllUnregisterServer' : redefinition; different linkage
    1>        C:Program FilesMicrosoft Visual Studio 8VCPlatformSDKincludeolectl.h(420) : see declaration of 'DllUnregisterServer'

    Can anyone tell me what I'm doing wrong with these exports?

     

    【解决方法】

    You'll have to define them (not declare them) in a source code file that doesn't #include <olectl.h>.  However, COM components usually use a .def file to export entries since there are only four of them.  That allows you to omit the __declspec and avoid the error.  Make it look like this:

    EXPORTS
            DllCanUnloadNow     @1 PRIVATE
            DllGetClassObject   @2 PRIVATE
            DllRegisterServer   @3 PRIVATE
            DllUnregisterServer     @4 PRIVATE

  • 相关阅读:
    Python函数
    linux—shell 脚本编程
    python 内建函数
    列表解析式(List Comprehension)
    python标准库(datetime)
    python字典(dict)
    常用数据结构
    C 2010年笔试题
    C 2012年笔试题(保)
    C 2012年笔试题
  • 原文地址:https://www.cnblogs.com/time-is-life/p/5666392.html
Copyright © 2020-2023  润新知