外部入口点C ++(lib或dll)

时间:2011-08-18 20:12:05

标签: c++ extern entry-point

我想知道是否有可能在某些库中创建一个入口点(main或winmain)。我正在尝试编写一个窗口管理器代码,我想在一个库中使用main函数,其中特定于应用程序的文件只定义了一些winmain调用的外部函数(例如extern render()或extern refresh())

我试图自己做这个,但是我收到的错误是没有定义入口点。

2 个答案:

答案 0 :(得分:0)

您可以使用项目中的Module-Definition file指定DLL中的导出。

答案 1 :(得分:0)

我只是花了最近几天试图为自己找出这个并且很幸运。

注意我只针对静态库(.lib)

尝试了这个

.lib文件的用途是,如果调用库的函数,它们只会被使用并连接到您的项目。 现在最小项目的问题是你只有一个主要功能。 但是你的项目没有调用它,那么它与它有什么联系呢?

我的解决方案,可能不那么优雅,但它对我有用: 创建一个LibConnection.h,其中包含lib.h并从lib.cpp中调用一个虚函数。 在我看来,不好的部分是你必须将lib.h和Connectionlib.h包含在项目文件中。

像这样:

//Lib.h
void ConnectionFunction();

//Lib.cpp
int main(int argc, char* argv[])
{
    //do some stuff
}

//This function doesn't do anything but it is important 
//that you define it in your lib.h and declare it in your lib.cpp
void ConnectionFunction()
{
}

现在您有一个基本库,必须创建一个连接文件 像这样:

//LibConnection.h
#include "Lib.h"
//now we call the connectionfunction
//remember non of this get really called but it makes possible connecting with your
//almost empty library
void Dummy()
{
     ConnectionFunction();
}

然后在你的空项目中:

//testapp.cpp
#include "LibConnection.h"
//remember to include the lib.h and the libconnection.h into your project files

void Foo()
{
    //this function doesn't get called but your project is running!
}

希望这会有所帮助:)