//Service.h
#ifdef SERVICE_EXPORT
#define SERVICE_API __declspec(dllexport)
#else
#define SERVICE_API __declspec(dllimport)
#endif
namespace Core {
typedef class SERVICE_API ServiceLocator : public boost::noncopyable { /*...*/ } Service; //Contains log, etc
SERVICE_API extern Service service;
}
//Service.cpp
SERVICE_API Core::Service Core::service = Core::Service();
//Main.cpp
#include "Service.h"
int main(int argc, char* argv[]) {
Core::service.GetLog("Hello");
return 0;
}
以上是对实际代码的简化,因为我的问题是在运行时发生的,而不是在编译时发生的
每当我启动主程序时,我都会遇到'The procedure entry point ?service@Core@@3VServiceLocator@1@A cound not be found in the dynamic link library'
的问题
我使用dumpbin
和DependencyWalker
来查看导出表中是否缺少它,只是在那里找到它。
我尝试使用调试工具在代码中放置断点,但是在调用main函数之前就会出现问题,但是在调试时会抛出'Unhandled exception at 0x775F36E5 (ntdll.dll) in GhostRunner.exe: 0xC0000139: Entry Point Not Found.'