DUMPBIN实用程序损坏的名称输出

时间:2013-12-24 10:34:34

标签: c++ dll dllimport dllexport

我正在使用DUMPBIN实用程序从c ++ dll获取损坏的名称以在c#应用程序中使用。 我正在使用__declspec(dllexport)公开一个c ++类成员函数,输出错位名称结果如下:

?InitPort@CProtocolStack@@QAEEHEPAEKE@Z = ?InitPort@CProtocolStack@@QAEEHEPAEKE@Z (public: unsigned char __thiscall CProtocolStack::InitPort(int,unsigned char,unsigned char *,unsigned long,unsigned char))

导入相同的功能时,是否需要在C#应用程序中使用整个名称? 如果没有,哪一部分足以进口?

3 个答案:

答案 0 :(得分:2)

你只需要这一点:

?InitPort@CProtocolStack@@QAEEHEPAEKE@Z

然后你宣布它为:

[DllImport("your.dll",
    EntryPoint = "?InitPort@CProtocolStack@@QAEEHEPAEKE@Z",
    ExactSpelling = true)]
static extern byte CProtocolStack::InitPort( /* etc. */);

答案 1 :(得分:1)

唐'吨。如果您不使用托管C ++(可以调用它) 直接来自C#),在你的界面中声明函数 extern "C",然后直接使用函数名称。莽莽可以 从编译器的一个版本更改为下一个版本; extern "C"名称赢了。

答案 2 :(得分:0)

如果不需要重载函数,可以使用import React from "react"; import styled from "styled-components"; import SVG from "react-inlinesvg"; import radio from "./radio.svg"; interface SVGProps { color: string; } const StyledSVG = styled(SVG)<SVGProps>` width: 24px; height: 24px; & path { fill: ${({ color }) => color}; } `; export default function App() { const color = "#007bff"; return <StyledSVG color={color} src={radio} />; } 确定函数的名称。