在自己机器上运行正常,别的机器上无法运行

l362696422 2014-05-30 08:40:46
调用adobe的一个动态库PDFMakerAPI.dll,将word转换成pdf。结果在自己机器上运行正常,到别的机器就无法运行。已经将所需文件打包了。
ps:在别的机器上这个动态库regsvr32注册过了,abode acrobat也安装了。但就是无法正常运行,求大神解决啊。
...全文
304 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
帅得_被人砍 2014-05-30
  • 打赏
  • 举报
回复
我觉得是电脑环境的配置,好好检查一下
l362696422 2014-05-30
  • 打赏
  • 举报
回复
adobe 版本完全一样,至于office则不需要,因为这个是adobe acrobat的功能。
Dobzhansky 2014-05-30
  • 打赏
  • 举报
回复
那台机器要安装 office, 而且是 office 2003, office 2007 都不行 看看转换调用的返回值, 0 是成功.
ojekleen 2014-05-30
  • 打赏
  • 举报
回复
能够打水印,不能够转换,是不就安装的adobe reader的版本不一样?
l362696422 2014-05-30
  • 打赏
  • 举报
回复
using System;
using System.Windows.Forms;
using PDFMAKERAPILib;

namespace pdfFormApp
{
public partial class Form1 : Form
{
private string PDF_DIRECTORY_PATH = @"C:\pdfFolder\";

public Form1()
{
InitializeComponent();
}

private void btn_select_Click(object sender, EventArgs e)
{
openFileDialog1.Multiselect = false;
openFileDialog1.ShowDialog();
docPath.Text = openFileDialog1.FileName;
}

private void btn_Switch_Click(object sender, EventArgs e)
{
if (docPath.Text != null && docPath.Text != "")
{
string pdfFileName = PDF_DIRECTORY_PATH + GetRandomName();

PDFMakerApp app = new PDFMakerApp();

int flag = app.CreatePDF(docPath.Text, pdfFileName, PDFMakerSettings.kConvertAllPages, false, true, true, System.Type.Missing);

if (flag == 0)
{
pdfPath.Text = pdfFileName;
}
else
{
pdfPath.Text = "switch fail" + flag;
}

}
}

public string GetRandomName()
{
string companyName = "TaiJiKeJi";
DateTime nowTime = DateTime.Now;

companyName += "_" + nowTime.ToString().Replace("/", "_").Replace(":", "_").Replace(" ", "_");
string text = "pqowieurytalskdjfhgmznxbcv";
string lastName = "";
Random rad = new Random();

for (int i = 0; i < 10; ++i)
{
double randomDou = rad.NextDouble();
int randomInt = rad.Next(text.Length);

int pos = (int)(randomDou * 100 + randomInt) % text.Length;
lastName += text[pos];
}

return companyName + lastName + ".pdf";
}

private void btn_show_Click(object sender, EventArgs e)
{
if (pdfPath.Text != null && pdfPath.Text != "")
{
System.Diagnostics.Process.Start(pdfPath.Text);
}

}
}
}


这是代码,主要调用这个接口 PDFMakerApp出错。
l362696422 2014-05-30
  • 打赏
  • 举报
回复
引用 6 楼 sunny906 的回复:
[quote=引用 4 楼 l362696422 的回复:] 第三方的dll就PDFMakerAPI.dll这一个,没有引用绝对路径。我现在是在两台机器上写的程序,结果写程序的那两台机器都可以跑通,但是换了机器就不行。难道是这个dll注册不正确吗。无论是我封装成Active控件还是Window Form Application都是一个样,引用别的dll都运行正常,比如给pdf添加水印这个功能就正常,但是就是转换不来。
是运行环境的问题,写程序的机器拥有.net程序运行所必需的环境,换个机器可就不一定了,根据错误提示找找看看是什么原因[/quote] 没有错误信息。不抛异常的。前面说过这是调用adobe的库,没有异常信息,只有返回值正不正确。正常情况下返回0,现在总是返回-7或-23.就只有这一个。
jiaoshiyao 2014-05-30
  • 打赏
  • 举报
回复
能说下哪个地方出的错吗。。。 我看了下回复 有的人说你没.net环境有的人说你这个第三方库没弄好 给个错误的提示
sunny906 2014-05-30
  • 打赏
  • 举报
回复
引用 4 楼 l362696422 的回复:
第三方的dll就PDFMakerAPI.dll这一个,没有引用绝对路径。我现在是在两台机器上写的程序,结果写程序的那两台机器都可以跑通,但是换了机器就不行。难道是这个dll注册不正确吗。无论是我封装成Active控件还是Window Form Application都是一个样,引用别的dll都运行正常,比如给pdf添加水印这个功能就正常,但是就是转换不来。
是运行环境的问题,写程序的机器拥有.net程序运行所必需的环境,换个机器可就不一定了,根据错误提示找找看看是什么原因
changjiangzhibin 2014-05-30
  • 打赏
  • 举报
回复
查看环境和引用的第三方的组件或DLL是否一致【如路径、版本、操作系统、32或64位】
l362696422 2014-05-30
  • 打赏
  • 举报
回复
第三方的dll就PDFMakerAPI.dll这一个,没有引用绝对路径。我现在是在两台机器上写的程序,结果写程序的那两台机器都可以跑通,但是换了机器就不行。难道是这个dll注册不正确吗。无论是我封装成Active控件还是Window Form Application都是一个样,引用别的dll都运行正常,比如给pdf添加水印这个功能就正常,但是就是转换不来。
bdmh 2014-05-30
  • 打赏
  • 举报
回复
确认.net环境是否安装、匹配,再确认没有其他第三方的dll了吗,或者资源文件,或者写了 一些绝对路径,客户机找不到
l362696422 2014-05-30
  • 打赏
  • 举报
回复
这是调用别的库,没有异常信息,只是返回值不正确。正常情况下返回0,现在总是返回-7或-23.另外也不是机器位数的问题,我两台机器都是x64的。
WM_JAWIN 2014-05-30
  • 打赏
  • 举报
回复
你要把错误信息贴上来.不能跑的原因有很多. 如果跑不了的机子是x64的,那把你的程序编译成x86的试试

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧