如何链接(导入)libs与dll

时间:2017-06-12 12:37:24

标签: python windows bazel

遵守以下规则:

# in @org_python
cc_library(
    name = "lib",
    srcs = [
         "libs/python35.lib",
    ],
    ...

# in //
cc_binary(
    name = "bin",
    srcs = [
        "mypybinding.cpp",
    ],
    deps = [
        "@org_python//:lib",
    ],

链接发出了很多:

mypybinding.o : error LNK2001: unresolved external symbol PyType_Type

正确链接导入库需要哪些步骤?

似乎问题的一部分是python35.lib中的此条目:

Version      : 0
Machine      : 8664 (x64)
TimeDateStamp: 576F0350 Sun Jun 26 00:18:56 2016
SizeOfData   : 00000019
DLL name     : python35.dll
Symbol name  : PyType_Type
Type         : data
Name type    : name
Hint         : 794
Name         : PyType_Type

我认为这意味着该符号仅在DLL中可用,并且不可能完全静态链接。

我尝试将dll放入srcs但看起来这些只是直接传递给链接器。

1 个答案:

答案 0 :(得分:0)

请勿使用srcs,而是使用linkopts

cc_library(
    ...
    linkopts = ["-Wl,python35.lib"],
)

请参阅this example