zoukankan      html  css  js  c++  java
  • 导出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

  • 相关阅读:
    十分钟上手-搭建vue开发环境(新手教程)
    二叉树基本操作C代码
    javaScript改变HTML
    javaScript查找HTML元素
    javaScript示例
    javaScript语法基础
    jsp useBean
    +Java中的native关键字浅析(Java+Native+Interface)++
    在myeclipse中拷贝一个工程,修改部署的名字
    解压版mysql安装
  • 原文地址:https://www.cnblogs.com/time-is-life/p/5666392.html
Copyright © 2011-2022 走看看