我不是C ++程序员,而是代码编辑器"所以我特此诚恳地提前就这个问题道歉。
对于某些广播软件,我正在编辑一个插件,以便在本机C / +和CLR(C#)之间实现互操作。
主机软件:OBS(Open Broadcaster Software) - obsproject.com
插件:CLR主机插件 - github.com/kc5nra/CLRHostPlugin
我想要做的是将函数从OBS暴露给一些CLR库,可以在这里找到可公开函数的总列表:https://github.com/jp9000/OBS/blob/master/OBSApi/APIInterface.h#L198
现在,插件是语言之间的代理,并通过API.h / cpp,https://github.com/kc5nra/CLRHostPlugin/blob/master/CLRHostInterop/API.h公开了上面提到的一些功能。 我想要做的是向API.h添加更多功能,以便将它们公开给CLR库。
当我在API.h第51行添加一个函数时,它会给我链接器错误。
namespace CLROBS
{
public ref class API
{
public:
void AddSettingsPane(SettingsPane^ settingsPane);
void AddImageSourceFactory(ImageSourceFactory^ imageSourceFactory);
IntPtr API::GetMainWindowHandle();
void Log(System::String^ format, ...array<System::Object^> ^arguments);
System::String^ GetPluginDataPath();
void SetChangedSettings(bool isChanged);
int GetMaxFPS();
void StartStopStream(); // Addition to the original.
};
};
#include "OBSApi.h"
#include "API.h"
#include "CLRHostApi.h"
#include "OBSUtils.h"
using namespace System::Runtime::InteropServices;
// Default code......
int API::GetMaxFPS()
{
return ::API->GetMaxFPS();
}
void API::StartStopStream()
{
OBSStartStopStream();
}
error LNK2022: metadata operation failed (80131187) : Inconsistent method declarations in duplicated types (types: CLROBS.API; methods: StartStopStream): (0x0600006c). <DIR>\CLRHostPlugin\CLRHostInterop\API.obj CLRHost.Interop
error LNK2022: metadata operation failed (80131187) : Inconsistent method declarations in duplicated types (types: CLROBS.API; methods: StartStopStream): (0x0600006c). <DIR>\CLRHostPlugin\CLRHostInterop\AbstractPlugin.obj CLRHost.Interop
error LNK2022: metadata operation failed (801311D6) : Differing number of methods in duplicated types (CLROBS.API): (0x02000008). <DIR>\CLRHostPlugin\CLRHostInterop\API.obj CLRHost.Interop
error LNK2022: metadata operation failed (801311D6) : Differing number of methods in duplicated types (CLROBS.API): (0x02000008). <DIR>\CLRHostPlugin\CLRHostInterop\AbstractPlugin.obj CLRHost.Interop
使用普通代码时,我眼中的奇怪行为不会发生
namespace CLROBS
{
public ref class API
{
public:
void AddSettingsPane(SettingsPane^ settingsPane);
void AddImageSourceFactory(ImageSourceFactory^ imageSourceFactory);
IntPtr API::GetMainWindowHandle();
void Log(System::String^ format, ...array<System::Object^> ^arguments);
System::String^ GetPluginDataPath();
void SetChangedSettings(bool isChanged);
int GetMaxFPS();
// - commented out - void StartStopStream(); // Addition to the original.
};
};
添加了API.cpp代码段
即使我注释掉OBSStartStopStream();在API.cpp上,错误仍然存在。
请协助。
此致
MusicDemon