编译项相关的一些

来源:互联网 发布:阳江网络问政主页 编辑:程序博客网 时间:2024/05/21 01:44

近日,总是在与服务器联调,但这次是有史以来最麻烦的一次。

很久没有动过C++的环境和代码,很多地方都很生疏了。

 

现在赶紧拾起来。

 

vista机器上编译的代码死活无法访问到服务器,调试到访问服务器那段时,引用总是报错。详见该贴:http://topic.csdn.net/u/20100505/18/614e2c77-e3a4-496f-8692-05e822149ce1.html

 

其他机器也无法使用该套dll库,只得在xp上编译使用。

 

但问题接踵而来:

 

1。 关于运行时库。


/MD[d]
/MT[d]
/LD[d]

 

参看 MSDN 文档:http://msdn.microsoft.com/zh-cn/library/2kzt1wy3(VS.80).aspx。

 

选项 说明

/MD

使应用程序使用运行时库的多线程并特定于 DLL 的版本。定义 _MT_DLL,并使编译器将库名 MSVCRT.lib 放入 .obj 文件中。

用此选项编译的应用程序静态链接到 MSVCRT.lib。该库提供允许链接器解析外部引用的代码层。实际工作代码包含在 MSVCR80.DLL 中,该库必须在运行时对于与 MSVCRT.lib 链接的应用程序可用。

当在定义了 _STATIC_CPPLIB (/D_STATIC_CPPLIB) 的情况下使用 /MD 时,它将导致应用程序与静态多线程标准 C++ 库 (libcpmt.lib) 而非动态版本 (msvcprt.lib) 链接,同时仍通过 msvcrt.lib 动态链接到主 CRT。

/MDd

定义 _DEBUG_MT_DLL,并使应用程序使用运行时库的调试多线程并特定于 DLL 的版本。它还使编译器将库名 MSVCRTD.lib 放入 .obj 文件中。

/MT

使应用程序使用运行时库的多线程静态版本。定义 _MT 并使编译器将库名 LIBCMT.lib 放入 .obj 文件中,以便链接器使用 LIBCMT.lib 解析外部符号。

/MTd

定义 _DEBUG_MT。此选项还使编译器将库名 LIBCMTD.lib 放入 .obj 文件中,以便链接器使用 LIBCMTD.lib 解析外部符号。

/LD

创建 DLL。

将 /DLL 选项传递到链接器。链接器查找 DllMain 函数,但并不需要该函数。如果没有编写 DllMain 函数,链接器将插入返回 TRUE 的 DllMain 函数。

链接 DLL 启动代码。

如果命令行上未指定导出 (.exp) 文件,则创建导入库 (.lib);将导入库链接到调用您的 DLL 的应用程序。

将 /Fe(命名 EXE 文件)解释为命名 DLL 而不是 .exe 文件;默认程序名成为 basename.dll 而不是 basename.exe。

除非显式指定 /MD,否则将暗指 /MT

/LDd

创建调试 DLL。定义 _MT_DEBUG

 

 

2。 关于:general error c101008d

这个问题在我的vista系统上没有问题,这个问题我也是第一次遇到。MSDN 上没有给出明确答复,不过从其他地方看到说可以将生成的 manifest 文件处置为 false 。

不过问题就在这里了。因为 XULRUNNER 必须嵌入清单,这样才能加载库文件。

 

有点无语了。接着改。