1
我有一個C-Wrapper代碼用於我的C++框架。由於這應該在Mac和Windows上運行我使用scons的:來自C++源代碼的C-DLL
env = Environment()
env.Append(CPPPATH = ['./'])
env.Append(LIBS = 'kernel32.lib')
env.Append(LIBPATH = 'C:/Program Files/Microsoft SDKs/Windows/v6.0A/Lib')
env.SharedLibrary(target='warpLib', source='warplib.cpp')
warplib.cpp的簡單版本和warplib.h是這樣的:
warplib.cpp
#define DllExport __declspec(dllexport)
#include "warplib.h"
extern "C" {
DllExport int foo(int a) {
return a;
}
}
warplib.h
#define DllExport __declspec(dllexport)
extern "C" {
DllExport int foo(int a);
}
有人可以告訴我那有什麼問題嗎?我嘗試了'extern'C''幾乎所有可能的組合,但它總是會引發類似「錯誤C2732:鏈接規範與'...'的早期規範相矛盾」。
如果我跳過'extern「C」'它可以工作,但我沒有看到.lib文件,我非常確定我需要那個真正使用庫。