DLL项目中的静态链接功能

时间:2010-06-20 05:26:30

标签: c++

我不知道为什么,但我认为我可以静态链接导入库中的函数。看来我是唯一一个曾经尝试过的人,因为我不能为我的生活找到类似的帖子。有没有办法从动态链接的项目中有选择地静态链接函数而无需创建新项目和/或将其重新编译为静态?模块本身通过接口进行通信,我在导出功能方面并不是很重要。我只想静态链接代码来创建对象....

把它变成一个宏有多糟糕?

IClassFactory* CF = NULL;
hr = CoGetClassObject (
    CLSID_CF,
    CLSCTX_INPROC_SERVER,
    NULL,
    IID_IClassFactory,
    (void**)&CF );

Interface* Instance = NULL;
hr = CF->CreateInstance (
    NULL,
    IID_Interface,
    (void**)&Instance );

2 个答案:

答案 0 :(得分:1)

静态链接和导入库不能一起使用。导入库用于帮助链接器确定您调用的函数位于DLL中。

如果您想要静态链接(假设您有可用的代码),请将DLL项目重新配置重新编译为静态库。

答案 1 :(得分:1)

如果这是您自己的项目(或者您有源代码并愿意修改它),您可以将inline函数用于您不想动态链接的函数。