C ++ DLL过程入口点由于变量引起的异常

时间:2015-02-10 20:53:41

标签: c++ dll

代码

DLL

//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'的问题 我使用dumpbinDependencyWalker来查看导出表中是否缺少它,只是在那里找到它。
我尝试使用调试工具在代码中放置断点,但是在调用main函数之前就会出现问题,但是在调试时会抛出'Unhandled exception at 0x775F36E5 (ntdll.dll) in GhostRunner.exe: 0xC0000139: Entry Point Not Found.'

0 个答案:

没有答案