我有一个在 Visual Studio 2010 中编译的 WPF 应用程序,它使用 CLR .dll 与一些非托管 C/C++ 代码进行交互。这个想法是 WPF 引用 CLR .dll 反过来引用非托管代码。不幸的是,我遇到了可怕的链接问题,因为非托管 C/C++ 代码和相关库都静态链接到 C/C++ 运行时,但是如果我尝试在 CLR .dll 上使用该代码生成方法,则会引发错误因为 /clr 选项和静态链接到 CRT 是不兼容的。我需要以某种方式将这些东西粘合在一起。
我的想法是尝试创建一个额外的.dll,它只包含单个包中的所有非托管代码(也静态链接到 CRT),然后将其链接到CLR .dll,然后链接到应用程序(blech !)。我试图制作这样一个 .dll,但问题是(可能很明显?)它没有从静态 .lib 文件中提取任何符号,因为它不需要任何符号。我尝试强制符号引用(/OPT:NOREF),但这似乎没有做任何事情。它只是一个“链接”到库的空 .dll,但实际上并没有做任何事情。所以这个想法是一个很大的失败。
我接近这整个事情都错了吗?
我没有一些非托管库的源代码,所以我无法重新编译它们以动态链接到 CRT。这些链接问题变得非常令人沮丧!
感谢您的任何建议!
更新:我想这无异于尝试将模块混合在一起,/MT
根据this,这是不可能的。您应该如何链接您无法控制第三方库的项目?您只是希望他们都选择使用相同的运行时库链接方法?!似乎是一个可怕的想法.../MD