• 导出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

  • 相关阅读:
    Centos 设置开机进图形界面/终端
    Ubuntu 开机慢(networking.service导致)
    Linux 内核下载地址
    C/C++中内存对齐
    编译器数据模型
    CPU中断
    sql语句
    mysql学习
    Active进阶
    SpringBoot整合ActiveMQ
  • 原文地址:https://www.cnblogs.com/time-is-life/p/5666392.html
Copyright © 2020-2023  润新知