weixin_39621060 2020-11-29 16:38
浏览 0

Add __declspec(dllexport) to class Node and class Op if build on Wind…

Add __declspec(dllexport) to class Node and class Op if build on Windows, so that it can be referenced in some test code in MXNet

该提问来源于开源项目:dmlc/nnvm

  • 写回答

5条回答 默认 最新

  • weixin_39621060 2020-11-29 16:38
    关注

    I got error while building MXNet with test projects on Windows. I figured out there's some changes needed in NNVM code as well as MXNet code itself. 5> Creating library D:/Git/MXNet/build/tests/Debug/mxnet_unit_tests.lib and object D:/Git/MXNet/build/tests/Debug/mxnet_unit_tests.exp 5>coreop_perf.obj : error LNK2019: unresolved external symbol "public: static class nnvm::Op const * __cdecl nnvm::Op::Get(class std::basic_string,class std::allocator\ > const &)" (?Get@?$basic_string?$char_traits@?$allocator@@@) referenced in function "public: void __cdecl mxnet::test::op::CoreOpExecutor::Init(class std::vector,class std::allocator\ >,class std::basic_string\,class std::allocator\ > >,class std::allocator\,class std::allocator\ >,class std::basic_string\,class std::allocator\ > > > > const &,class std::vector > const &,class std::vector > const &,class mxnet::test::op::CoreOpExecutor const *)" (?Init@?$CoreOpExecutor@?$vector?$pair?$basic_string?$char_traits@?$allocator@@@@?$allocator?$pair?$basic_string?$char_traits@?$allocator@@@@@@@?$vector@?$allocator@@@@@) 5>core_op_runner_test.obj : error LNK2001: unresolved external symbol "public: static class nnvm::Op const * __cdecl nnvm::Op::Get(class std::basic_string,class std::allocator\ > const &)" (?Get@?$basic_string?$char_traits@?$allocator@@@) 5>operator_tune_test.obj : error LNK2001: unresolved external symbol "public: static class nnvm::Op const * __cdecl nnvm::Op::Get(class std::basic_string,class std::allocator\ > const &)" (?Get@?$basic_string?$char_traits@?$allocator@@@) 5>coreop_perf.obj : error LNK2019: unresolved external symbol "private: static class dmlc::any const * __cdecl nnvm::Op::GetAttrMap(class std::basic_string,class std::allocator\ > const &)" (?GetAttrMap@@?$basic_string?$char_traits@?$allocator@@@) referenced in function "public: static class nnvm::OpMap,class std::allocator\ > > const & __cdecl nnvm::Op::GetAttr,class std::allocator\ > >(class std::basic_string,class std::allocator\ > const &)" (??$GetAttr?$basic_string?$char_traits@?$allocator@@@@?$OpMap?$basic_string?$char_traits@?$allocator@@@?$basic_string?$char_traits@?$allocator@@@) 5>core_op_runner_test.obj : error LNK2001: unresolved external symbol "private: static class dmlc::any const * __cdecl nnvm::Op::GetAttrMap(class std::basic_string,class std::allocator\ > const &)" (?GetAttrMap@@?$basic_string?$char_traits@?$allocator@@@) 5>operator_tune_test.obj : error LNK2001: unresolved external symbol "private: static class dmlc::any const * __cdecl nnvm::Op::GetAttrMap(class std::basic_string,class std::allocator\ > const &)" (?GetAttrMap@@?$basic_string?$char_traits@?$allocator@@@) 5>coreop_perf.obj : error LNK2019: unresolved external symbol "private: static void __cdecl nnvm::Op::UpdateAttrMap(class std::basic_string,class std::allocator\ > const &,class std::function)" (?UpdateAttrMap@?$basic_string?$char_traits@?$allocator@@?$function@$$A6AXPEAVany@@@) referenced in function "public: static class nnvm::OpMap,class std::allocator\ > > const & __cdecl nnvm::Op::GetAttr,class std::allocator\ > >(class std::basic_string,class std::allocator\ > const &)" (??$GetAttr?$basic_string?$char_traits@?$allocator@@@@?$OpMap?$basic_string?$char_traits@?$allocator@@@?$basic_string?$char_traits@?$allocator@@@) 5>core_op_runner_test.obj : error LNK2001: unresolved external symbol "private: static void __cdecl nnvm::Op::UpdateAttrMap(class std::basic_string,class std::allocator\ > const &,class std::function)" (?UpdateAttrMap@?$basic_string?$char_traits@?$allocator@@?$function@$$A6AXPEAVany@@@) 5>operator_tune_test.obj : error LNK2001: unresolved external symbol "private: static void __cdecl nnvm::Op::UpdateAttrMap(class std::basic_string,class std::allocator\ > const &,class std::function)" (?UpdateAttrMap@?$basic_string?$char_traits@?$allocator@@?$function@$$A6AXPEAVany@@@) 5>coreop_perf.obj : error LNK2019: unresolved external symbol "public: static class std::shared_ptr __cdecl nnvm::Node::Create(void)" (?Create@?AV?$shared_ptr@@@) referenced in function "private: class std::shared_ptr __cdecl mxnet::test::op::CoreOpExecutor::MakeNode(void)const " (?MakeNode@?$CoreOpExecutor@?AV?$shared_ptr@@@) 5>core_op_runner_test.obj : error LNK2001: unresolved external symbol "public: static class std::shared_ptr __cdecl nnvm::Node::Create(void)" (?Create@?AV?$shared_ptr@@@) 5>operator_tune_test.obj : error LNK2001: unresolved external symbol "public: static class std::shared_ptr __cdecl nnvm::Node::Create(void)" (?Create@?AV?$shared_ptr@@@) 5>D:\Git\MXNet\build\tests\Debug\mxnet_unit_tests.exe : fatal error LNK1120: 4 unresolved externals

    评论

报告相同问题?