You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MIDL未生成COM进程外服务器所需dlldata.c和Simple_p.c,如何解决?

问题原因与解决方法

核心问题

你的IDL文件将ISimple接口定义在了library块内部,MIDL编译器默认不会为library内的接口生成代理/存根文件——library块的核心作用是生成类型库(.tlb),而非处理远程调用所需的代理逻辑。

解决步骤

1. 调整IDL文件结构

将ISimple接口移到library块外部,同时在library内声明该接口以保证类型库能正确包含它。修改后的IDL如下:

import "unknwn.idl";

[
    uuid(F1C3B039-C7C1-4375-9EE2-B8E438F6C12A),
    object,
    pointer_default(unique)
]
interface ISimple : IUnknown
{
    HRESULT Add([in] int a, [in] int b, [out] int* result);
}

[
    uuid(12345678-1234-1234-1234-123456789012),
    version(1.0)
]
library SimpleLib
{
    interface ISimple;

    [
        uuid(2D84F751-A78D-4FAB-9B6F-93D6E94578C2)
    ]
    coclass Simple
    {
        [default] interface ISimple;
    }
}

2. 重新执行MIDL命令

保持你原来的MIDL命令不变,在Visual Studio开发者命令提示符中重新执行:

midl /Oicf /env win32 /h Simple.h /iid Simple_i.c /proxy Simple_p.c /dlldata dlldata.c /tlb Simple.tlb Simple.idl

此时MIDL会正确生成dlldata.c和Simple_p.c文件,配合其他生成的文件即可编译代理/存根DLL。

内容的提问来源于stack exchange,提问作者007 996

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:32:36